Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để phân tích cú pháp một chuỗi và tạo một số cột từ nó?

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

CHỈNH SỬA :Một cái gì đó như thế này được đặt trong một hàm hoặc thủ tục được lưu trữ kết hợp với bảng tạm thời sẽ hoạt động cho nhiều dòng, tùy thuộc vào dấu phân cách dòng, bạn cũng nên xóa CHAR(13) trước khi bạn bắt đầu:

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. Làm cách nào để bạn nhập một tệp MS SQL .sql lớn?

  2. Cách an toàn nhất để lấy ID bản ghi cuối cùng từ một bảng

  3. Mệnh đề WHERE để tìm tất cả các bản ghi trong một tháng cụ thể

  4. Hợp nhất nhiều cơ sở dữ liệu thành một cơ sở dữ liệu duy nhất

  5. Tìm hiểu quy trình gọi được lưu trữ trong SQL Server