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

Jak oddzielić (podzielić) ciąg znaków przecinkiem w procedurze składowanej SQL Server

Jeśli przekażesz ciąg oddzielony przecinkami (dowolny separator) do procedury przechowywania i użyjesz go w zapytaniu, musisz wypluć ten ciąg, a następnie go użyjesz.

Poniżej mamy przykład:

DECLARE @str VARCHAR(500) = 'monday,tuesday,thursday'
CREATE TABLE #Temp (tDay VARCHAR(100))
WHILE LEN(@str) > 0
BEGIN
    DECLARE @TDay VARCHAR(100)
    IF CHARINDEX(',',@str) > 0
        SET  @TDay = SUBSTRING(@str,0,CHARINDEX(',',@str))
    ELSE
        BEGIN
        SET  @TDay = @str
        SET @str = ''
        END
  INSERT INTO  #Temp VALUES (@TDay)
 SET @str = REPLACE(@str,@TDay + ',' , '')
 END

 SELECT * 
 FROM tblx 
 WHERE days IN (SELECT tDay FROM #Temp)


  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 zachować obliczoną kolumnę GEOMETRIA lub GEOGRAPHY

  2. Zapytanie, aby uzyskać najnowsze dołączenie na innym stole z datą

  3. SQL Server sprawdza rozróżnianie wielkości liter?

  4. Kiedy powinienem używać zmiennej tabeli a tabeli tymczasowej w serwerze sql?

  5. SQL:znajdowanie średniego wyniku