sql >> Databasteknik >  >> RDS >> Sqlserver

Delsträng efter ett mellanslag

Här är en version som använder SUBSTRING och CHARINDEX för versioner av SQL SERVER före SQL Server 2016 när STRING_SPLIT introducerades.

Något av följande fungerar:

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

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

Vi måste hitta utrymmets position med CHARINDEX (som returnerar ett tal som representerar var strängen (mellanrummet) börjar. Men strängen som vi vill välja börjar efter mellanslag, därför måste vi lägga till 1 (+1) till startposition för vår SUBSTRING så att startpositionen blir CHARINDEX(' ', @string) + 1.

Det 3:e argumentet för SUBSTRING är längden på strängen som ska väljas, i det första fallet antar jag bara att strängen du angav som en varchar(20) inte kan vara längre än 20 tecken, därför använder jag 20. Obs SUBSTRING kommer inte att försöka välj tecken efter slutet av strängen, så det är säkert att ange en längd som är längre än antalet kvarvarande tecken.

Mitt andra exempel får längden på strängen att välja baserat på att den är längden på den totala strängen (DATALENGTH) minus antalet tecken före vårt val (CHARINDEX + 1)



  1. Lägg till ytterligare en användare till MySQL i Kubernetes

  2. MySQL och HBase Connectivity

  3. Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:NEJ)? Kan du inte autentisera php/Mysql?

  4. Oracle subtraherar dagar och minuter