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)