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

T-SQL:w przeciwieństwie do łączenia ciągów — jak podzielić ciąg na wiele rekordów

Jest tu udokumentowanych wiele różnych rozwiązań tego problemu, w tym ten mały klejnot:

CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
    WITH Pieces(pn, start, stop) AS (
      SELECT 1, 1, CHARINDEX(@sep, @s)
      UNION ALL
      SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
      FROM Pieces
      WHERE stop > 0
    )
    SELECT pn,
      SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM Pieces
  )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj nazwę miesiąca na numer miesiąca w SQL Server

  2. Pobierz ostatni dzień miesiąca w SQL

  3. Jak połączyć się z bazą danych z Unity?

  4. SQL :BETWEEN vs <=i>=

  5. SQL Server DATEPART() vs DATENAME() — jaka jest różnica?