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

sql-server-2005:Jak wykonać podział na zmiennej łańcuchowej rozdzielanej potokami?

Jest to pomocny i prosty sposób na zapytanie o rozdzielany ciąg tak, jakby był to tabela.

Pobrane z:http://www.mindsdoor.net/SQLTsql/ParseCSVString.html

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_ParseCSVString]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fn_ParseCSVString]
GO


create function fn_ParseCSVString
(
@CSVString  varchar(8000) ,
@Delimiter  varchar(10)
)
returns @tbl table (s varchar(1000))
as
/*
select * from dbo.fn_ParseCSVString ('qwe,c,rew,c,wer', ',c,')
*/
begin
declare @i int ,
    @j int
    select  @i = 1
    while @i <= len(@CSVString)
    begin
        select  @j = charindex(@Delimiter, @CSVString, @i)
        if @j = 0
        begin
            select  @j = len(@CSVString) + 1
        end
        insert  @tbl select substring(@CSVString, @i, @j - @i)
        select  @i = @j + len(@Delimiter)
    end
    return
end


GO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatycznie rozwiąż konflikt scalania kluczy podstawowych

  2. Pobieranie wartości zwracanej w C# asp.net z procedury składowanej (problem ze składnią)

  3. Jak wyświetlić listę wszystkich kluczy obcych za pomocą WITH NOCHECK w SQL Server?

  4. LEFT() vs SUBSTRING() w SQL Server:jaka jest różnica?

  5. Pobierz rozszerzenie pliku za pomocą SQL?