Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przeanalizować ciąg i utworzyć z niego kilka kolumn?

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

EDYTUJ :Coś takiego jak to umieszczone w funkcji lub procedurze składowanej połączonej z tabelą tymczasową powinno działać dla więcej niż jednej linii, w zależności od ogranicznika linii należy również usunąć CHAR(13) zanim zaczniesz:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. alternatywy dla REPLACE w typie danych text lub ntext

  2. Jak wybrać podzbiór kolumn z zestawu wyników procedury składowanej (T-SQL)

  3. SqlServer jest w trybie aktualizacji skryptu

  4. Czy SQL Server 2012 FTS ma natywną obsługę podświetlania trafień?

  5. CAST(DATETIME AS DATE) przez klauzulę WHERE