我如何检查是否value IS NOT NULL AND TRIM(value) != '' AND value != 0
?
如果我检查 a'string' != 0
它总是返回 false,所以它不起作用。
它适用于不知道其查询的列类型的通用查询。
我需要做类似的事情(value IS NUMERIC TYPE AND value != 0)
value
可以是字符串、日期、时间、blob、数字等。
也许CAST(value AS int) <> 0
?
我以前在使用记录集进行 SQL 数据迁移时做过类似的事情。
if trim(fields(0).value & "") > "" then '我们有一个值
所以如果它为空,它就变成一个空字符串,如果它不为空,它就变成一个修剪后的字符串。最有效的方法......可能不是,但它有效。
在不了解列类型的情况下,您可以借助正则表达式来确定是根据字符串还是数字列数据进行处理:
value IS NOT NULL AND
IF(value REGEXP '^-?[0-9]+(\.[0-9]+)?$', value <> 0, TRIM(value) <> '')
根据正则表达式的结果,它将比较反对0
或反对''
。
警告字符串包含'0'
将被视为空,但在搜索 MySQL 网站后,我找不到合适的解决方法。