MySQL数据库:
+-----------+
| Number |
+-----------+
| 121255 |
+-----------+
| 22552525 |
+-----------+
| 122221221 |
+-----------+
| 555554 |
+-----------+
| 55445533 |
+-----------+
如何仅获取具有两个数字的那些数字? 结果将是:
22552525和122221221和555554
答案 0 :(得分:0)
测试列中从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
答案 1 :(得分:0)
我认为该列只能包含数字。
应用两次replace()
,以便删除其余字符串的第一个字符,然后删除第一个字符。
如果剩下的是一个空字符串,则此数字仅包含2个不同的数字。
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
请参见demo。
结果:
| number |
| --------- |
| 22552525 |
| 122221221 |
| 555554 |