Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

W SQL Server, jak utworzyć pętlę while w select

Możesz zrobić coś takiego.....
Twój stół

CREATE TABLE TestTable 
(
ID INT,
Data NVARCHAR(50)
)
GO

INSERT INTO TestTable
VALUES (1,'AABBCC'),
       (2,'FFDD'),
       (3,'TTHHJJKKLL')
GO

SELECT * FROM TestTable

Moja sugestia

CREATE TABLE #DestinationTable
(
ID INT,
Data NVARCHAR(50)
)
GO  
    SELECT * INTO #Temp FROM TestTable

    DECLARE @String NVARCHAR(2)
    DECLARE @Data NVARCHAR(50)
    DECLARE @ID INT

    WHILE EXISTS (SELECT * FROM #Temp)
     BEGIN 
        SELECT TOP 1 @Data =  DATA, @ID = ID FROM  #Temp

          WHILE LEN(@Data) > 0
            BEGIN
                SET @String = LEFT(@Data, 2)

                INSERT INTO #DestinationTable (ID, Data)
                VALUES (@ID, @String)

                SET @Data = RIGHT(@Data, LEN(@Data) -2)
            END
        DELETE FROM #Temp WHERE ID = @ID
     END


SELECT * FROM #DestinationTable

Zestaw wyników

ID  Data
1   AA
1   BB
1   CC
2   FF
2   DD
3   TT
3   HH
3   JJ
3   KK
3   LL

Tabele temp. DROP

DROP TABLE #Temp
DROP TABLE #DestinationTable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak obliczyć liczbę dni w roku w serwerze sql 2008

  2. Java7 sqljdbc4 - błąd SQL 08S01 podczas getConnection()

  3. Czy powinienem indeksować pole bitowe w SQL Server?

  4. Zapytanie Linq nie działa zgodnie z oczekiwaniami

  5. Jak stworzyć alias bazy danych w SQL Server