sql >> Databáze >  >> RDS >> Sqlserver

Podřetězec za mezerou

Zde je verze používající SUBSTRING a CHARINDEX pro verze SQL SERVER starší než SQL Server 2016 při STRING_SPLIT byl představen.

Kterákoli z následujících funkcí:

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

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

Pozici mezery potřebujeme najít pomocí CHARINDEXU (který vrací číslo reprezentující, kde řetězec (mezera) začíná. Řetězec, který chceme vybrat, však začíná za mezerou, proto musíme do pole přidat 1 (+1). počáteční pozice našeho PODŘETĚZCE tak, aby počáteční pozice byla CHARINDEX(' ', @string) + 1.

3. argument pro SUBSTRING je délka vybraného řetězce, v prvním případě pouze předpokládám, že řetězec, který jste zadali jako varchar(20), nemůže být delší než 20 znaků, proto používám 20. Poznámka SUBSTRING se nebude snažit vyberte znaky za koncem řetězce, takže je bezpečné zadat délku delší, než je počet zbývajících znaků.

Můj druhý příklad získá délku řetězce k výběru na základě délky celkového řetězce (DATALENGTH) mínus počet znaků před naším výběrem (CHARINDEX + 1)



  1. Postgresql vytváří databázi

  2. kaskádové mazání způsobující více kaskádových cest

  3. Instalace RAC pro databázi s datovými soubory

  4. Zdroj nenalezen Soubor JAR mysql-connector-java-5.1.20-bin.jar nemá žádnou zdrojovou přílohu