您可以在 postgreSQL 查询中格式化电话号码吗?我有一个电话号码列。电话号码是这样保存的:1234567890。我想知道postgres是否会格式化为(123)456-7890。我可以在查询之外执行此操作,我使用的是 php,但如果我能够获得像 (123) 456-7890 这样的查询输出,那就太好了
问问题
9721 次
5 回答
4
这将为您工作:
SELECT
'( ' || SUBSTRING(CAST(NUMBER AS VARCHAR) FROM 1 FOR 3) || ' ) '
|| SUBSTRING(CAST(NUMBER AS VARCHAR) FROM 4 FOR 3) || '-'
|| SUBSTRING(CAST(NUMBER AS VARCHAR) FROM 7 FOR LENGTH(CAST(NUMBER AS VARCHAR)))
FROM
YOURTABLE
此外,这是一个SQLFiddle。
于 2013-10-28T19:31:08.920 回答
4
使用正则表达式,它更灵活且易于阅读。假设数字在“电话”字段中:
SELECT regexp_replace(phone, '(\d{3})(\d{3})(\d{4})', '(\1) \2-\3') phone FROM table;
您还可以通过各种方式对其进行修饰:为国家代码添加可选数字,允许多个数字或更多。
例如,首先去除非数字和固定的半格式值,如 (123) 4567890:
SELECT regexp_replace(regexp_replace(phone, '\D', '', 'g'), '(\d{3})(\d{3})(\d{4})', '(\1) \2-\3') phone FROM table;
于 2019-06-22T20:32:21.740 回答
1
使用SUBSTRING函数
就像是:
SELECT
'(' || SUBSTRING((PhoneNumber, 1, 3) + ') ' || SUBSTRING(PhoneNumber, 4,3) || '-' || SUBSTRING((PhoneNumber,7,4)
于 2013-10-28T19:24:41.070 回答
0
另一种选择是使用该FORMAT
功能。有关详细信息,请参阅Postgresql 字符串函数。
你的例子看起来像
SELECT FORMAT('(%s)%s-%s', SUBSTR(phone, 1, 3), SUBSTR(phone, 4, 3), SUBSTR(phone, 7, 4))
FROM table;
于 2021-12-16T13:55:07.680 回答
0
SELECT '(' || SUBSTRING(phone FROM 1 FOR 3) || ') ' ||
SUBSTRING(phone FROM 4 FOR 3) || '-' ||
SUBSTRING(phone FROM 7 FOR 4)
FROM table;
这将返回格式为 (123) 456-7890 的所有电话号码,但不会有列标题。要解决此问题,请使用以下 SELECT 语句:
SELECT '(' || SUBSTRING(电话从 1 到 3) || ') ' || SUBSTRING(电话从 4 到 3)|| '-' || SUBSTRING(电话从 7 到 4)作为电话从章节;
希望这可以帮助!
于 2018-11-13T10:52:26.717 回答