SQL格式化字段
在我的数据库中,我有一个名为“电话号码”的列。 大多数数字是——其中一些是。如何运行查询以将所有数字的格式设置为相同 我更喜欢:SQL格式化字段,sql,sqlite,formatting,Sql,Sqlite,Formatting,在我的数据库中,我有一个名为“电话号码”的列。 大多数数字是——其中一些是。如何运行查询以将所有数字的格式设置为相同 我更喜欢: ###-###-##### PS:这是一个任意的解决方案。我会使用脚本语言来实现类似的功能。在PHP中: $string = "1234567890"; $formatted_string = substr($string,0,3)."-".substr($string,3,3)."-".substr($string,6,4); 我当然希望你是在和美国打交道,这仅
###-###-#####
PS:这是一个任意的解决方案。我会使用脚本语言来实现类似的功能。在PHP中:
$string = "1234567890";
$formatted_string = substr($string,0,3)."-".substr($string,3,3)."-".substr($string,6,4);
我当然希望你是在和美国打交道,这仅仅是从你的示例电话号码中假设的。一旦你开始走向国际,事情就会变得艰难。我也希望这些变化只是你说的两个。。。SQL在这方面不是很好,但这就是原因 根据请求编辑SQLite查询。我使用了SQLite文档,特别是核心函数和select语句 我的原始查询在MS SQL中工作
select SUBSTRING(Phone, 1, 3) + '-' +
SUBSTRING(PHONE, 4, 3) + '-' +
SUBSTRING(PHONE, 7, 4)
from source
where CHARINDEX(Phone, '-') = 0
你可以先考虑把所有的电话号码都清理干净。例如:
select SUBSTRING(Phone, 1, 3) + '-' +
SUBSTRING(PHONE, 4, 3) + '-' +
SUBSTRING(PHONE, 7, 4)
from (
select REPLACE(REPLACE(REPLACE(REPLACE(Phone, '-', ''), '(', ''), ')', ''), ' ', '') Phone
from source
) xx
电话号码可能变得复杂得可笑。例如,我在那次大扫除中错过了几节课。我强烈建议用T-SQL以外的代码来清理它们。u可以使用长度函数来使用case语句……我会使用CONCAT、SUBSTR函数来代替Do something所有数字都是USA、波多黎各。SQLite没有SUBSTRING或CHARINDEX。它确实有SUBSTR,但不确定CHARINDEX是什么。对不起,我没有注意到SQLite要求。CHARINDEX只是一个函数,如果您想象字符串的每个位置的编号从1到长度,那么它可以定位字符串中的字符。我还没有在SQLite中找到类似的函数。
select SUBSTRING(Phone, 1, 3) + '-' +
SUBSTRING(PHONE, 4, 3) + '-' +
SUBSTRING(PHONE, 7, 4)
from source
where CHARINDEX(Phone, '-') = 0
select SUBSTRING(Phone, 1, 3) + '-' +
SUBSTRING(PHONE, 4, 3) + '-' +
SUBSTRING(PHONE, 7, 4)
from (
select REPLACE(REPLACE(REPLACE(REPLACE(Phone, '-', ''), '(', ''), ')', ''), ' ', '') Phone
from source
) xx