sql - Informix 7.3 中是否有用于测试字母或数字数据的内置函数?

标签 sql function informix built-in isnumeric

我一直在寻找一个 SQL 函数来测试一个值是 alpha 值还是数字值。 Informix 7.3 似乎没有这样的功能,但我可能遗漏了一些东西或者一直在寻找错误的东西。

例如,我正在尝试测试电话号码字段中是否只有数字并相应地处理它:

给定电话字段类型为 char(12) 的此表:

id      name        phone
5164      Cheese      973-153-5149
8843      Queso       (201)8011830
8356      Formaggio   2129182943
8938      Ost         ext.21438
3852      Ser         973-15-1549

我想做这样的事情:

SELECT  CASE    WHEN    (ISALPHA((TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))))
                THEN    'has alpha chars'
                WHEN    (LENGTH((TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))) NOT IN (10,11))
                THEN    'wrong length'
                WHEN    (phone IN ('',' ',NULL)))
                THEN    'phone is blank'
                ELSE    (TRIM(REPLACE((REPLACE((REPLACE((REPLACE((REPLACE(phone,'-','')),'(','')),')','')),' ','')),'.','')))
        END     phone
FROM    given_table;

基本上,我试图删除任何 -() . 电话号码中的字符,修剪该结果,测试其长度为 10 或 11 个字符,并确保在所有替换和修剪之后数据中没有字母字符。 (如果您觉得我的替换和修剪方式有任何问题,我也愿意就这方面提出建议。正则表达式?)

我想要的最终结果是:

phone
9731535149
2018011830
2129182943
has alpha chars
wrong length

我读过一篇 solution (Oracle) 建议结合使用 LENGTHTRIMTRANSLATE 但 Informix 不支持 TRANSLATE 7.3


*请注意 - 如果不存在我将编写自己的函数,所以请不要建议将其作为答案。我只想知道是否有任何内置方法可以做到这一点。
乔纳森莱弗勒来拯救?

最佳答案

这是我发现的一种测试 alpha 的方法。这是一种变通方法,但我认为到目前为止它是可靠的。

SELECT phone FROM given_table WHERE UPPER(phone)<>LOWER(phone);

引用:http://www.geekinterview.com/question_details/34549 (请参阅页面一半以上的用户“amarnathtnl”的回答)

关于sql - Informix 7.3 中是否有用于测试字母或数字数据的内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487657/

相关文章:

scheduler - 如何在informix中使用调度程序

sql - 将时间 23 :59:59. 999 添加到结束日期之间

带有最新记录的 SQL 子查询

sql - 针对树结构的优化SQL

xml - VTD-XML 2.11 XPath 表达式 count() 失败,出现异常 com.ximpleware.XPathEvalException : Function Expr can't eval to node set

Python 聊天 : delete variables to clean memory in functions?

mysql - SQL select结果之间的算术运算

javascript - 将局部变量从一个函数传递到另一个函数

informix - 在 4gl 文件中找不到函数定义

java - 在查询的任何表中都找不到列 (XIT115)(或 SLV 未定义)