MySQL数据库:
+-----------+
| Number |
+-----------+
| 121255 |
+-----------+
| 22552525 |
+-----------+
| 122221221 |
+-----------+
| 555554 |
+-----------+
| 55445533 |
+-----------+怎么才能得到那些有两个号码的数字呢?其结果将是:
22552525及122221221及555554
发布于 2019-07-05 17:34:39
测试从0到9的每一个数字的列,如果匹配,则将1添加到计数中。
因此,WHERE子句只返回计数正好为2的行。
SELECT
*
FROM mytable
WHERE
CASE WHEN number LIKE '%1%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%2%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%3%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%4%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%5%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%6%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%7%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%8%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%9%' THEN 1 ELSE 0 END +
CASE WHEN number LIKE '%0%' THEN 1 ELSE 0 END
= 2发布于 2019-07-05 17:54:44
我假设列只能包含数字。
应用两次replace(),以便删除第一个字符,然后删除其余字符串的第一个字符。
如果剩下的是一个空字符串,那么这个数字只包含两个不同的数字。
select * from tablename
where
length(replace(number, left(number, 1), '')) > 0
and
length(replace(
replace(number, left(number, 1), ''),
left(replace(number, left(number, 1), ''), 1),
''
)) = 0 见演示。
结果:
| number |
| --------- |
| 22552525 |
| 122221221 |
| 555554 |https://stackoverflow.com/questions/56907067
复制相似问题