Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да анализираме низ и да създадем няколко колони от него?

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

РЕДАКТИРАНЕ :Нещо като това, поставено във функция или съхранена процедура, комбинирано с временна таблица, трябва да работи за повече от един ред, в зависимост от разделителя на реда трябва също да премахнете CHAR(13) преди да започнете:

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. Как да огранича NULL като параметър до съхранената процедура SQL Server?

  2. Редове на SQL Server не могат да се редактират за Access след вмъкване

  3. Как да намерите работни места за агент на SQL Server в Azure Data Studio

  4. Разберете дали дадена таблица е разделена в SQL Server (T-SQL)

  5. Как мога да вмъкна 10 милиона записа за възможно най-кратко време?