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

làm thế nào để sử dụng một like với một tham gia trong sql?

Sử dụng INSTR :

SELECT *
  FROM TABLE a
  JOIN TABLE b ON INSTR(b.column, a.column) > 0

Sử dụng LIKE:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'

Sử dụng LIKE, với CONCAT:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')

Lưu ý rằng trong tất cả các tùy chọn, có thể bạn sẽ muốn chuyển các giá trị cột thành chữ hoa TRƯỚC KHI so sánh để đảm bảo bạn nhận được các kết quả phù hợp mà không cần quan tâm đến phân biệt chữ hoa chữ thường:

SELECT *
  FROM (SELECT UPPER(a.column) 'ua'
         TABLE a) a
  JOIN (SELECT UPPER(b.column) 'ub'
         TABLE b) b ON INSTR(b.ub, a.ua) > 0

Hiệu quả nhất cuối cùng sẽ phụ thuộc vào gói GIẢI THÍCH đầu ra.

JOIN mệnh đề giống với cách viết WHERE điều khoản. JOIN cú pháp cũng được gọi là ANSI JOIN vì chúng đã được chuẩn hóa. Các THAM GIA KHÔNG ANSI trông giống như:

SELECT *
  FROM TABLE a,
       TABLE b
 WHERE INSTR(b.column, a.column) > 0

Tôi sẽ không bận tâm với một ví dụ THAM GIA TRÁI KHÔNG ANSI. Lợi ích của cú pháp ANSI JOIN là nó phân tách những gì đang kết hợp các bảng với nhau khỏi những gì đang thực sự xảy ra trong WHERE mệnh đề.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli_stmt ::bind_result ():Số biến ràng buộc không khớp với số trường trong câu lệnh đã chuẩn bị

  2. Cách tốt nhất để kiểm tra người dùng hiện có trong cơ sở dữ liệu mySQL?

  3. Làm cách nào để bạn quản lý các truy vấn SQL

  4. Kiểm tra xem IP có trong mạng con không

  5. mySQL chuyển đổi varchar thành ngày tháng