sql - 操作选择查询的输出
问题描述
我需要从数据库中检索唯一的手机号码。问题是数字没有固定格式,有些开头有
+CountryCode
或00CountryCode
没有+
,country code
所以我想使用 If 操纵它们以具有单一格式。但我不想更改数据库中的值,我只想在查询本身中更改它。
我不知道该怎么做DISTINCT
这就是我到目前为止所做的
SELECT DISTINCT PhoneNumber
FROM User
where (len(PhoneNumber) = 13 or len(PhoneNumber) = 10 or phoneNumber like '311%' or phoneNumber like '00311%' )
解决方案
使用case when
. 这是MySQL的解决方案
select distinct case when length(phone) = 10 then concat('00382', right(phone ,(length(phone)-1)))
when length(phone) = 13 then replace(phone, '+', '00')
when length(phone) = 12 then concat ('00', phone)
else phone
end
from myTable;
在这里,我假设您将拥有 10 位长的电话号码,例如:0123456789 我还假设当号码有国家代码时,第一个数字不会显示,例如:00382123456789(14 位长)。
所以假设我已经这样做了:
如果号码长 10 位 (0123456789),则添加国家代码 (00382) 并删除第一位 (0)
如果数字是长 13 位数字,则将 + 替换为 00
如果数字长 12 位,则添加 00
这是演示
这是SQLServer的解决方案:
select distinct case when len(phone) = 10 then concat('00382', right(phone ,(len(phone)-1)))
when len(phone) = 13 then replace(phone, '+', '00')
when len(phone) = 12 then concat ('00', phone)
else phone
end
from myTable;
推荐阅读
- python - 使用对数比例错误的 seaborn 热图:无法找到沿轴的像素距离
- php - 如何在 Mac 上将 php7.1 升级到 7.3
- javascript - Jacascript base64 未根据需要解码
- php - 在 Phalcon 请求中获取 XDEBUG_SESSION_START 标头
- c# - 画一个有 3 条边的三角形
- vuetify.js - v-data-table - 在顶部添加滚动条
- php - PHP文件和文件html文件之间链接的问题
- matlab - 检测模拟的持续时间
- laravel - Laravel:如果用户是管理员,将默认 laravel 用户重定向到管理页面,或者如果用户不是管理员,如何将默认用户重定向到用户页面?
- html - 当标签包含强元素时,Chrome 会忽略标签