我有一个在 MySQL 数据库上使用的查询,该查询对结果进行排序,在可能的情况下(当 char 字符串是数字时)将 char 数据库字段转换为整数,因此例如ORDER BY
我在 MySQL 上使用的子句是:
ORDER BY
CASE
WHEN CONVERT(charfield, SIGNED INTEGER) IS NOT NULL THEN
CAST(charfield AS SIGNED INTEGER)
ELSE 9999999999 END
其中 charfield 是数据库字段字符 (25)。
我该如何翻译这个ORDER BY
Firebird 2.5 的条款?
你可以使用SIMILAR TO
运算符,即
ORDER BY
CASE
WHEN charfield SIMILAR TO '[0-9]+' THEN CAST(charfield AS INTEGER)
ELSE 9999999
END
如果该字段有前导或尾随空格,那么您必须使用TRIM()
函数在测试之前删除那些,即
WHEN TRIM(charfield) SIMILAR TO ...
为了允许负数,您必须修改模式以包含-
,即该子句将变为
ORDER BY
CASE
WHEN TRIM(charfield) SIMILAR TO '\-?[0-9]+' ESCAPE '\' THEN CAST(charfield AS INTEGER)
ELSE 9999999
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)