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

Mệnh đề SQL IN trong thủ tục được lưu trữ

Có một số cách để thực hiện điều này:

  1. SQL động, như được chỉ ra trong bài viết này: http://asheej.blogspot.com/2012/04/how-to-use-ms-sql-in-clause-with.html

  2. Chỉ định từng mục trong các biến (điều này có thể trở nên khá xấu nếu bạn có nhiều 'chúng):

    @ var1 varchar (20), @ var2 varchar (20), @ var3 varchar (20)

  3. Viết hàm split để biến chuỗi thành biến bảng, có rất nhiều biến ngoài đó. Đây là mục yêu thích của cá nhân tôi: http://dataeducation.com/faster -more-scalable-sqlclr-string-splitting /

  4. Sử dụng Tham số giá trị bảng (2008):http://www.techrepublic.com/blog/datacenter/passing-table-valued-parameters-in-sql-server-2008/168

  5. Đây là một mẹo nhỏ khi sử dụng CHARINDEX (lưu ý rằng cách tiếp cận này là Non-Sargable):

Chuỗi của bạn giống như sau:'abc, def'

Sử dụng CHARINDEX , bạn chèn cả chuỗi tìm kiếm và giá trị bạn muốn tìm trong chuỗi tìm kiếm bằng máy đo mê cung của bạn. Vì vậy, bằng cách sử dụng ví dụ nhỏ của tôi, chuỗi sẽ trở thành ', abc, def,' Chú ý thêm dấu phẩy ở đầu và cuối. Sau đó, làm điều tương tự với dữ liệu trường. Nếu bạn có dấu phẩy trong dữ liệu của mình, bạn sẽ phải hoán đổi từ mê sảng sang một thứ gì đó khác, như ký tự (2) hoặc dấu chấm phẩy, hoặc bất cứ điều gì.

Sau đó, để thực hiện tìm kiếm:

WHERE CHARINDEX ( ',' + expressionToFind + ',' , ',' + expressionToSearch ',') > 0

Phần đệm mê sảng ngăn không cho tìm kiếm tìm thấy "abcabc" nhưng sẽ tìm thấy "abc", đối sánh chính xác.

Nếu bạn đang sử dụng 2005, tôi sẽ lấy một chức năng chia rất nhanh để bạn có thể tránh sử dụng SQL động.




  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 thế nào để sửa lỗi Microsoft SQL Server Error 926? - Đã giải quyết

  2. Cách tạo khóa ngoại tổng hợp trong SQL Server (Ví dụ T-SQL)

  3. 4 Hoạt động giám sát cơ sở dữ liệu chính mà mọi DBA nên biết

  4. Tìm các trường không được sử dụng (có tất cả các trường rỗng)

  5. máy chủ sql - kiểm tra xem có thể truyền được không