sql >> Database teknologi >  >> RDS >> Sqlserver

Understreng efter et mellemrum

Her er en version, der bruger SUBSTRING og CHARINDEX for versioner af SQL SERVER før SQL Server 2016, når STRING_SPLIT blev introduceret.

Et af følgende virker:

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, DATALENGTH(@string) - CHARINDEX(' ', @string) +1 )

Vi skal finde rummets position ved hjælp af CHARINDEX (som returnerer et tal, der repræsenterer, hvor strengen (mellemrummet) begynder. Men strengen, som vi ønsker at vælge, begynder efter mellemrummet, derfor skal vi tilføje 1 (+1) til startposition for vores SUBSTRING, så startpositionen bliver CHARINDEX(' ', @string) + 1.

Det 3. argument for SUBSTRING er længden af ​​strengen, der skal vælges, i det første tilfælde antager jeg bare, at den streng, du har angivet som en varchar(20), ikke må være længere end 20 tegn, derfor bruger jeg 20. Bemærk, SUBSTRING vil ikke forsøge at vælg tegn forbi slutningen af ​​strengen, så det er sikkert at angive en længde, der er længere end antallet af tegn tilbage.

Mit andet eksempel får længden af ​​strengen, der skal vælges baseret på, at den er længden af ​​den samlede streng (DATALENGTH) minus antallet af tegn før vores valg (CHARINDEX + 1)



  1. SQL Server rekursiv selvtilslutning

  2. Hvorfor er der behov for UDFØR STRAKS her?

  3. Henter rækker i en MySQL-databasetabel ved hjælp af MySQL C API og C++

  4. Oracle (Gamle?) Joins - Et værktøj/script til konvertering?