我有动态数据库,我想在这个表中搜索
FieldID | Content | TypeID
--------------------------
ABC-123 | jon | 1
EFG-456 | doe | 1
HIJ-789 | man | 1
Run Code Online (Sandbox Code Playgroud)
所以我的SELECT查询看起来像这样:
SELECT
GROUP_CONCAT(fieldsContent.Content SEPARATOR '|*|') AS Content,
GROUP_CONCAT(fieldsContent.FieldID SEPARATOR '|*|') AS FieldID,
FROM (`customers`)
LEFT OUTER JOIN `fieldsContent` ON `fieldsContent`.`TypeID` = `customers`.`ID`
GROUP BY `fieldsContent`.`TypeID`
ORDER BY `customers`.`Created` DESC
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样
Array
(
[0] => stdClass Object
(
[Content] => jon|*|doe|*|man
[FieldID] => ABC-123|*|EFG-456|*|HIJ-789
)
)
Run Code Online (Sandbox Code Playgroud)
当我添加HAVING并仅搜索时jon,它会返回结果
HAVING Content LIKE "%jon%"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试搜索时jon doe,它将返回空结果
HAVING Content LIKE "%jon doe%"
Run Code Online (Sandbox Code Playgroud)
因为jon doe字符串中不存在,只有jon|*|doe
那么如何将这两行合并为一个字符串而不使用SEPARATOR来搜索它们jon doe呢?
但!!请记住,我需要获取SEPARATOR因为我需要结合要在php中使用的数据.
例如:
$field = explode('|*|',$data->FieldID);
$content = explode('|*|',$data->Content);
foreach($field as $k => $FieldID){
switch($FieldID){
case 'ABC-123':
$res['first_name'] = $content[$k];
break;
case 'EFG-456':
$res['last_name'] = $content[$k];
break;
case 'HIJ-789':
$res['gender'] = $content[$k];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激:)
HAVING Content LIKE "%jon%doe%"
Run Code Online (Sandbox Code Playgroud)
HAVING Content LIKE "%jon" AND Content LIKE "%doe%"
Run Code Online (Sandbox Code Playgroud)
HAVING REPLACE(Content,'|*|',' ') LIKE "%jon doe%"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |