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

Trích xuất các ký tự ở bên phải của một giá trị được phân tách trong một câu lệnh SELECT

Câu hỏi này có câu trả lời cụ thể cho cơ sở dữ liệu.

Nếu sử dụng SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

Bạn có thể thêm CASE hoặc sử dụng NULLIF() trong trường hợp không phải lúc nào cũng có dấu gạch ngang:

SELECT column1
     , CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) 
           END as extracted
     , column3 
FROM myTable

Hoặc:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable

Nếu sử dụng MySQL, chỉ cần thay đổi CHARINDEX() thành LOCATE() . Tôi tin rằng Oracle đó là INSTR() và hai tham số đầu tiên được chuyển đổi, đầu tiên là chuỗi bạn đang tìm kiếm, sau đó là chuỗi bạn đang tìm kiếm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo tất cả các tập lệnh ràng buộc

  2. Làm cách nào để tính toán tương đương với SQL Server (băm ('SHA1', [ColumnName])) trong C #?

  3. Không thể tải tệp hoặc lắp ráp Microsoft.ReportViewer.WebForms.XmlSerializers

  4. Kế hoạch thực thi chế độ xem được phân vùng

  5. Làm thế nào để tạo một chỉ mục duy nhất trên một cột NULL?