Firebird 查询 - 仅限数字
Firebird query - numbers only
我正在做一个 Firebird SQL 查询,其中 column_type 是 VARCHAR 并且它是关于 phone 数字。查询正在我的 nodeJS 应用程序中执行。数据库的结果如下:
- 00-234-567
- 12/239-344
- +388-13123/323
- 等等
但我想要结果的格式只包含数字。所以只有
123321232
格式可以接受。我希望结果由查询格式化,而不是在节点 js 中。我已经阅读了一些关于 rtrim 的主题,但它现在被 trim 取代,这不允许这样做吗?转换为数字类型可能是最终的失败。什么是有效的解决方案?
编辑:我找到了一些信息,但我仍然不确定那是否有效。查询:
CASE
WHEN S.TELEFON SIMILAR TO '[0-9]+' THEN CAST(S.TELEFON AS INTEGER)
ELSE ''
END
AS PHONE
我想您可以使用 REPLACE
函数将所有非数字替换为空字符串:
select
replace(
replace(
replace(S.TELEFON, ' ', ''), -- space
'-', ''),
'/', '') AS phone
from mytab S
它很丑陋,只有当你需要摆脱的不同角色数量有限(并且你事先知道)时才有效。
我正在做一个 Firebird SQL 查询,其中 column_type 是 VARCHAR 并且它是关于 phone 数字。查询正在我的 nodeJS 应用程序中执行。数据库的结果如下:
- 00-234-567
- 12/239-344
- +388-13123/323
- 等等
但我想要结果的格式只包含数字。所以只有
123321232
格式可以接受。我希望结果由查询格式化,而不是在节点 js 中。我已经阅读了一些关于 rtrim 的主题,但它现在被 trim 取代,这不允许这样做吗?转换为数字类型可能是最终的失败。什么是有效的解决方案?
编辑:我找到了一些信息,但我仍然不确定那是否有效。查询:
CASE
WHEN S.TELEFON SIMILAR TO '[0-9]+' THEN CAST(S.TELEFON AS INTEGER)
ELSE ''
END
AS PHONE
我想您可以使用 REPLACE
函数将所有非数字替换为空字符串:
select
replace(
replace(
replace(S.TELEFON, ' ', ''), -- space
'-', ''),
'/', '') AS phone
from mytab S
它很丑陋,只有当你需要摆脱的不同角色数量有限(并且你事先知道)时才有效。