sql >> Database >  >> RDS >> Sqlserver

Hoe een string ontleden en er meerdere kolommen van maken?

SELECT substring(NameValue, 1, charindex('_', NameValue)-1) AS Names, 
  substring(NameValue, charindex('_', NameValue)+1, LEN(NameValue)) AS Values
FROM Table

BEWERKEN :Zoiets als dit in een functie of opgeslagen procedure in combinatie met een tijdelijke tabel zou voor meer dan één regel moeten werken, afhankelijk van het regelscheidingsteken moet u ook CHAR(13) verwijderen voordat je begint:

DECLARE @helper varchar(512)
DECLARE @current varchar(512)
SET @helper = NAMEVALUE
WHILE CHARINDEX(CHAR(10), @helper) > 0 BEGIN
    SET @current = SUBSTRING(@helper, 1, CHARINDEX(CHAR(10), NAMEVALUE)-1)
    SELECT SUBSTRING(@current, 1, CHARINDEX('_', @current)-1) AS Names, 
      SUBSTRING(@current, CHARINDEX('_', @current)+1, LEN(@current)) AS Names
    SET @helper = SUBSTRING(@helper, CHARINDEX(CHAR(10), @helper)+1, LEN(@helper))
END
SELECT SUBSTRING(@helper, 1, CHARINDEX('_', @helper)-1) AS Names, 
  SUBSTRING(@helper, CHARINDEX('_', @helper)+1, LEN(@helper)) AS Names


  1. mysql cross join, maar zonder gedupliceerd paar?

  2. Kolom toevoegen OF verwijderen uit CDC-geactiveerde tabel zonder gegevens te verliezen in SQL Server-database - SQL Server-zelfstudie

  3. MySQL - Hoe meerdere update-query's op één regel uitvoeren?

  4. MySQL Damerau-Levenshtein Fuzzy mengen met Like Wildcard