SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

cách chọn hàng dữ liệu từ trường giá trị được phân tách bằng dấu phẩy

Không bao giờ là tốt khi sử dụng các giá trị được phân tách bằng dấu phẩy để lưu trữ trong cơ sở dữ liệu nếu khả thi, hãy thử tạo các bảng riêng biệt để lưu trữ chúng vì rất có thể đây là 1:n mối quan hệ.

Nếu điều này không khả thi thì bạn có thể thực hiện theo những cách sau đây, Nếu số lượng giá trị cần khớp của bạn không đổi, thì bạn có thể muốn thực hiện chuỗi Like câu lệnh cùng với OR/AND tùy thuộc vào yêu cầu của bạn.

Ví dụ:

WHERE
    Media LIKE '%21%'
    OR Media LIKE '%30%'
    OR Media LIKE '%40%' 

Tuy nhiên, truy vấn ở trên sẽ có khả năng bắt tất cả các giá trị chứa 21 vì vậy ngay cả khi các cột có giá trị như 1210 , 210 cũng sẽ được trả lại. Để khắc phục điều này, bạn có thể thực hiện thủ thuật sau đây cản trở hiệu suất vì nó sử dụng các hàm trong where và điều đó đi ngược lại việc tạo Có thể tìm kiếm truy vấn. Nhưng đây rồi,

--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.

Declare @valueSearch = '21'

-- Then do the matching in where clause
WHERE 
    (',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'

Nếu số lượng giá trị cần khớp sẽ thay đổi thì bạn có thể muốn xem xét Chỉ mục FullText và bạn cũng nên nghĩ về điều tương tự. Và nếu bạn quyết định chọn điều này sau Fulltext Index bạn có thể làm như bên dưới để đạt được những gì bạn muốn,

Ví dụ:

WHERE 
     CONTAINS(Media, '"21" OR "30" OR "40"')


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Đổi tên các tab theo cách thủ công trong SSMS

  2. Cách đặt (kết hợp) hai khóa chính trong một bảng

  3. Xác thực thủ tục lưu trữ SQL trong .NET Front End (Tương tự như Tùy chọn phân tích cú pháp trong SSMS)

  4. Làm thế nào để sửa lỗi cú pháp SQL Server thiết lập FK trái ngược?

  5. Tạo tập lệnh máy chủ SQL từ dòng lệnh?