Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2008 Разделен низ от полето в записа

Използвайте КРЪСТОСНО ПРИЛАГАНЕ във връзка с разделящия ви СДС. Разделителят на низове, който използвам за моя пример, идва от тук .

/* Create function for purposes of demo */
CREATE FUNCTION [dbo].[fnParseStringTSQL] (@string NVARCHAR(MAX),@separator NCHAR(1))
RETURNS @parsedString TABLE (string NVARCHAR(MAX))
AS 
BEGIN
   DECLARE @position int
   SET @position = 1
   SET @string = @string + @separator
   WHILE charindex(@separator,@string,@position) <> 0
      BEGIN
         INSERT into @parsedString
         SELECT substring(@string, @position, charindex(@separator,@string,@position) - @position)
         SET @position = charindex(@separator,@string,@position) + 1
      END
     RETURN
END
go

/* Set up sample data */
declare @t table (
    IR int,
    CR varchar(100)
)

insert into @t
    (IR, CR)
    select 1, '1,2' union all
    select 2, '3' union all
    select 3, '4,5,6'

/* Here's the query that solves the problem */
select t.IR, p.string
    from @t t
        cross apply [dbo].[fnParseStringTSQL](t.CR,',') p


/* clean up after demo */
drop function [dbo].[fnParseStringTSQL]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server SMO се оплаква от липсваща DLL

  2. Име на колони за променлива на SQL Server?

  3. Инструкция PRINT в T-SQL

  4. Преобразувайте „datetimeoffset“ в „time“ в SQL Server (T-SQL примери)

  5. Как да преобразувам формата на системната дата в дд/мм/гг в SQL Server 2008 R2?