[英]SQL find part of string
我遇到了以下問題:我的表“ students
”具有列:“ id_student
”,“ name”和“ surname
”。 然后,我得到一個包含full_name的變量(例如:' James Bond '),我需要進行查詢以選擇'id_student
',其中'name'和'surname'匹配全名。
我試圖通過幾種方式做到這一點,例如:
SELECT id_student FROM students WHERE name+' '+surname LIKE full_name
但這不起作用。 任何想法?
您的代碼應在數據庫中,其中+
用於字符串連接。 LIKE
很好,但是=
似乎足夠:
SELECT id_student
FROM students
WHERE CONCAT(name, ' ', surname) = full_name;
請注意,意外的字符和拼寫上的微小差異會導致比較失敗。
MySQL不支持使用加號的字符串連接,至少默認情況下不支持。 相反,我們可以使用CONCAT
函數。 您想要在此處的LIKE
表達式是:
full_name LIKE 'James%Bond'
在這里,我們需要任何以James
開頭並以Bond
結尾的記錄。
SELECT id_student
FROM students
WHERE full_name LIKE CONCAT(name, '%', surname);
也許您應該嘗試類似的方法:
SELECT id_student
FROM students
WHERE CONCAT_WS(" ", name, surname)
LIKE full_name
CONCAT_WS
或CONCAT
是連接字符串的MySQL函數。 前者允許您定義分隔符,即您的情況下的空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.