gpt4 book ai didi

php - 使用带有逗号分隔 ID 的字符串的 SQL 选择命令

转载 作者:行者123 更新时间:2023-11-29 07:54:04 25 4
gpt4 key购买 nike

我有一个 PHP 字符串,例如:

"1234,2345,4567,5676,234,12,78957".....

我想以 varchar(30) 格式提取这些数字,并在类似的命令中使用它们

SELECT * FROM TABLE_NUM WHERE ID LIKE '%NUM';

其中 NUM 将包含上述 7 个字符串。

如果可能的话,我还想将“%NUM”中的“%”限制为 1-5 个字符,即前缀不应超过 5 个字符。示例 NUM = 1234 且 ID 为 (31234,5678956781234),它应该只提供第一个结果,而不提供另一个结果。

因此,我将获得所有匹配行的合并结果。

我怎样才能实现这个目标?

谢谢!

最佳答案

如果该字符串来自数据库中某处的列,则应该修复架构。设计一个必须处理子列数据的模式几乎总是一个坏主意。

如果它是来自数据库外部的字符串,并且您只想根据各个部分运行查询,那么您最好使用 DBMS 外部的设施构建查询。

例如,在Linux下使用bash:

pax> list="1234,2345,4567,5676,234,12,78957"
pax> for i in $(echo $list | sed 's/,/ /g'); do
...> echo mysql "\"SELECT * FROM TABLE_NUM WHERE ID LIKE '%$i'\""
...> done
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%1234'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%2345'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%4567'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%5676'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%234'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%12'"
mysql "SELECT * FROM TABLE_NUM WHERE ID LIKE '%78957'"

该脚本将回显命令来执行您想要的操作(假设 mysql 是 DBMS 的正确 CLI 接口(interface)) - 只需删除 echo 在开始时实际执行命令。

<小时/>

对于 PHP(根据您的问题编辑),您可以使用 explode 函数来分割字符串,例如:

$list = "1234,2345,4567,5676,234,12,78957";
$numbers = explode (",", $list);

然后对 $numbers 的每个元素执行查询。

<小时/>

如果您想要的是由所有这些值形成的单个结果集,还有其他方法可以实现。一种涉及使用列表构建一个“uber-query”字符串,它将为您完成所有工作,然后您执行一次。

只需使用 or 子句将不同的“子”查询连接为一个(伪代码):

$query = "select * from table_num"
$joiner = " where"
for each $element in $list:
$query = $query + $joiner + "id like '%" + $element + "'"
$joiner = " or"
execute_sql $query

最终为您提供查询字符串:

SELECT * FROM TABLE_NUM
WHERE ID LIKE '%1234'
OR ID LIKE '%2345'
:
OR ID LIKE '%78957'

关于php - 使用带有逗号分隔 ID 的字符串的 SQL 选择命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com