Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL格式化字段_Sql_Sqlite_Formatting - Fatal编程技术网

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