我有一个表,其中有一列 DR。 ID# 的。我想要所有包含 2 的行。
名字 | 博士_id |
---|---|
乔 | 534 |
埃里克 | 267 |
艾伦 | 309 |
史蒂文 | 125 |
加里 | 11 |
我一直在寻找子字符串的数字版本,但找不到。 唯一的其他想法是将值更改为字符串,然后进行子字符串搜索。还有别的办法吗?
我认为数字的固有特征是它适合数学运算。因此,如果您想根据数字的数字形式定义搜索条件,请确保可以通过对其执行数学计算来定义搜索条件。例如,如果我们想要
find a number which can be divided by 2
,我们可以使用 WHERE num mod 2 =0 and num<>0
.但是在这种情况下,我不确定条件
find a number which has a 2 in it
可以通过数学运算来证明。因此,使用字符串函数(或 REGEXP)可能是唯一的选择。这里我建议使用 locate(substr,str)
函数,如果 substr 不在 str 中则返回 0,如果任何参数为 NULL,则返回 NULL:
select * from tb where locate('2',dr_id)>0;
您必须使用字符串函数,其中数字将自动转换为字符串/字符。例如:
SELECT 123 LIKE "%2%" CONTAINS_2;
+------------+
| CONTAINS_2 |
+------------+
| 1 |
+------------+
SELECT LOCATE("3", 123) > 0 CONTAINS_3;
+------------+
| CONTAINS_3 |
+------------+
| 1 |
+------------+
SELECT INSTR(123, "1") > 0 CONTAINS_1;
+------------+
| CONTAINS_1 |
+------------+
| 1 |
+------------+
假设您的 DR,您可以通过在 SQL 中使用 LIKE 运算符来实现此目的。 ID 号以字符串形式存储。您可以使用 % 通配符在字符串中搜索数字“2”。这是一个示例查询:
SELECT *
FROM your_table
WHERE dr_id LIKE '%2%';
此查询将返回 dr_id 列在字符串中任意位置包含数字“2”的所有行。
如果您的博士。 ID号存储为整数,您可以在执行LIKE操作之前使用CAST函数将它们转换为字符串:
重要
SELECT *
FROM your_table
WHERE CAST(dr_id AS VARCHAR) LIKE '%2%';
这会将 dr_id 列转换为字符串,然后您可以使用 LIKE 执行子字符串搜索。
根据 dr_id 列的数据类型选择适当的查询。