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

SQL Server 2008 - tách trường Địa chỉ

Phân tích cú pháp chuỗi trong SQL là lộn xộn và có xu hướng dễ gãy. Tôi thường nghĩ rằng tốt nhất là nên thực hiện những loại nhiệm vụ này bên ngoài SQL. Điều đó nói rằng, với thông số kỹ thuật nhỏ ở trên, có thể phân tích cú pháp dữ liệu thành các trường bạn muốn như vậy:

select 
  left(PostalAddress, charindex('^', PostalAddress) - 1) as street_address,
  left(second_part, len(second_part) - charindex(' ', reverse(second_part))) as suburb,
  right(second_part, charindex(' ', reverse(second_part))) as state,
  reverse(substring(reverse(PostalAddress), 2, 4)) as postal_code
from (
  select
    PostalAddress,
    rtrim(reverse(substring(reverse(PostalAddress), 6, len(PostalAddress) - charindex('^', PostalAddress) - 5))) as second_part
  from Addresses
) as t1

Lưu ý rằng bạn sẽ cần thay thế tên bảng của mình cho những gì tôi đã gọi là địa chỉ trong truy vấn con ở trên.

Bạn có thể thấy điều này hoạt động dựa trên dữ liệu mẫu của mình tại đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gói SSIS được thực thi trong Tác nhân máy chủ không hoạt động (ngay cả khi báo cáo thành công)

  2. Làm thế nào để bạn thực hiện nhiều liên kết bên trong Linq đến các thực thể

  3. Tính trung bình giữa các cột bằng cách so sánh hai hàng trong SQL Server

  4. Cách ngăn cập nhật bảng, trừ một trường hợp ngoại lệ

  5. Chèn hàng loạt SQL Server - Phần 2