gpt4 book ai didi

informix - 在 Informix 中将 varchar 转换为数字

转载 作者:行者123 更新时间:2023-12-04 20:24:42 25 4
gpt4 key购买 nike

在 Informix 中将 varchar 类型转换为 Int 类型时遇到问题。
实际上我不知道该值是否真的是 varchar 或不是我想转换为 INT 的值。这是一个沙盒系统。

例如:
我正在尝试运行这种

Select telnumber from numbers n
where Cast(n.telnumber AS INT) between 1234 and 9999

我收到此错误:
“字符到数字转换错误”

如果我像这样运行这个查询:
Select telnumber from numbers n where n.telnumber between '1234' and '9999'

它带来了一个结果集,但不在我定义的范围内。
130987
130710
130723

如何将电话号码转换为数值并在 1234 和 9999 之间的“之间”范围内使用它

最佳答案

转换错误表明 telnumber 列中的某些值未格式化为有效整数 - 因此会触发您在尝试转换时看到的错误。

第二个查询列出了额外的值,因为当作为字符串进行比较时,'123' 介于 '10' 和 '20' 之间。

如果要将其限制为 4 位数字,则可以使用:

SELECT telnumber
FROM numbers n
WHERE n.telnumber BETWEEN '1234' AND '9999'
AND LENGTH(n.telnumber) = 4

这仍然会在结果集中包含“1AA2”。

完全正则表达式支持(例如 PCRE)在 IDS 中不作为标准存在 - 遗憾的是。但是,非标准 MATCHES 运算符将允许您执行此操作:
SELECT telnumber
FROM numbers n
WHERE n.telnumber BETWEEN '1234' AND '9999'
AND LENGTH(n.telnumber) = 4
AND n.telnumber MATCHES '[0-9][0-9][0-9][0-9]'

这是一个简单的正则表达式 - 但“*”是一种 shell 通配样式“零个或多个字符的任何序列”,而不是 Kleene Star 的“前一个字符的零个或多个重复”。

关于informix - 在 Informix 中将 varchar 转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com