Mysql 选择不同的值忽略额外的字符
我有一张有电话号码的桌子Mysql 选择不同的值忽略额外的字符,mysql,sql,Mysql,Sql,我有一张有电话号码的桌子 example: 4685293 +924685293 1254152 我需要选择前两个值作为忽略+92的值 我可以在查询中执行此操作,还是必须通过代码手动执行此操作。删除要忽略的模式: REPLACE(example,'+92','') 如果可以有不同的模式,但始终有3个字符+xx,则可以执行以下操作: CASE WHEN phone LIKE '+[0-9][0-9]%' THEN RIGHT(phone,LEN(phone)-3) ELSE phone
example:
4685293
+924685293
1254152
我需要选择前两个值作为忽略+92的值
我可以在查询中执行此操作,还是必须通过代码手动执行此操作。删除要忽略的模式:
REPLACE(example,'+92','')
如果可以有不同的模式,但始终有3个字符+xx,则可以执行以下操作:
CASE WHEN phone LIKE '+[0-9][0-9]%' THEN
RIGHT(phone,LEN(phone)-3)
ELSE
phone
END
您可以尝试只选择最后7个字符
select distinct(substring(phoneno,-7)) from ...
要选择您的本地电话号码,只需使用该功能 试试这个
所以不是快速回答-请提供有效代码,解释一般情况,如果任何人添加了不同的答案,以符合其他答案中的评论长度可能会有所不同,因此我不能在这里写7:+92也可能有所不同。我是否可以比较列的值以检查它是否包含上一个值?@SyedRizwanAli不清楚“上一个值”是什么意思。我的意思是我可以选择第一行值并与第二行进行比较,依此类推。
SELECT DISTINCT RIGHT(phone,7) FROM TABLE
;with cte as(
select replace(ph,'+92','') as replaced,
ROW_NUMBER() over (order by ph) as rn
from [dbo].[ph]
)
select * from cte where rn <3