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

Jak analyzovat řetězec a vytvořit z něj několik sloupců?

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

UPRAVIT :Něco takového vložené do funkce nebo uložené procedury kombinované s dočasnou tabulkou by mělo fungovat pro více než jeden řádek, v závislosti na oddělovači řádků byste měli také odstranit CHAR(13) než začnete:

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. PDO nevyvolává výjimku s nesvázanými parametry (a bez proměnných v dotazu)

  2. Výchozí hodnota Django modelu se v SQL nezobrazuje

  3. MariaDB JSON_SET() Vysvětleno

  4. Co jsou skrytá pole Oracle?