【问题标题】:Search from all field从所有领域搜索
【发布时间】:2018-02-06 06:10:57
【问题描述】:

我有一个用逗号分隔的字符串,例如 (delhi,110005,Hospital),我想这样搜索:

$string="delhi,110005,Hospital";

SELECT * FROM `hospitals` WHERE CONCAT(",", `sub_city_name`, ",") REGEXP ",($string),"

它只适用于一个字段,但是当我传递多个字段时它不起作用。

【问题讨论】:

  • 您要搜索什么?能具体点吗?
  • 你能展示一下表格结构和几行吗?
  • 精算师我有一个表格字段(city_name,sub_city_name,hospital_name,pincode),我有一个用逗号分隔的字符串,我想用 %like% 从所有字段中搜索数据
  • 我想像这样搜索 SELECT * FROM hospitals WHERE CONCAT(",", sub_city_name, city_name, hospital_name, ",") REGEXP ",($string), "

标签: php mysql regex select


【解决方案1】:

我假设您的搜索字符串具有序列中字段的值。例如,如果您想搜索所有字段,即

(city_name,sub_city_name,hospital_name,pincode)

您的搜索字符串也应该包含该序列中的值,即

$string="Delhi,Sub City,Hospital,110005";
$string2="Sub City,Hospital,110005";
$string3="Hospital,110005";
$string4="Delhi,Sub City";

如果我的假设是正确的,下面的查询可能对你有用。

SELECT *
FROM `hospitals`
WHERE  CONCAT(`city_name`,',',`sub_city_name`,',',`hospital_name`,',',`pincode`)
LIKE '%{string_goes_here}%';

SQL Fiddle Here

【讨论】:

    【解决方案2】:

    如果各个字段中没有逗号,请使用FIND_IN_SET() 测试项目是否在逗号列表中。

    【讨论】:

      【解决方案3】:

      你可能想使用类似下面的东西:

      SELECT * FROM `hospitals` WHERE field LIKE '%delhi,110005,Hospital%';
      

      【讨论】:

      • 精算师我有一个表格字段(city_name,sub_city_name,hospital_name,pincode),我有一个用逗号分隔的字符串,我想用 %like% 从所有字段中搜索数据
      • 可以分享几行实际表格的完整数据吗?
      猜你喜欢
      • 2013-02-16
      • 2013-07-06
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多