【发布时间】:2021-05-22 01:44:55
【问题描述】:
我正在尝试将具有不同数据类型的两列上的两个表连接起来。一个是varchar,一个是bigint。执行查询时,我收到一条错误消息“将数据类型 varchar 转换为 bigint 时出错。
CASE WHEN c.vcCompanyNo NOT LIKE '%[^0-9]%'
THEN CAST (c.vcCompanyNo AS BIGINT)
ELSE 0
END
FROM Client c
LEFT JOIN Nzbn n ON c.vcCompanyNo=n.SourceRegisterUniqueIdentifier
WHERE c.daTerminationDate IS NULL
我哪里做错了?谢谢!
【问题讨论】:
-
SQL 查询以
SELECT开头,所以从第一个标记开始就错了。 -
欢迎来到 Stack Overflow。正如@GordonLinoff 指出的那样,该声明是不完整的。此外,您将正则表达式 ( [^0-9] ) 与 SQL Like 语法(百分比字符)混合。很难知道你在这里真正想要什么(为什么不告诉我们?)但我很确定 LIKE 子句不会像你想的那样做。但至于您提出的问题:如果可能,请指出这是什么数据库(ORACLE?MSSQL?其他?)和 c.vcCompanyNo 的不同值。很可能(特别是因为 LIKE 被破坏了)你那里有非数字。
标签: mysql sql varchar sqldatatypes bigint