sql-server - 将 varchar 值“YTLQVLBK”转换为数据类型 int 时转换失败。嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:
问题描述
我正在调用空手道 DButil 来执行空手道脚本中的数据库查询之一:
* def test = db.readValue('SELECT * FROM CLIENT C WHERE C.ClientCode = ' + globalAccountID)
这里 i',无法将 globalAccountID 转换为字符串。请帮助解决这个问题。
我的错误跟踪如下:
javascript 评估失败:db.readRows('SELECT * FROM CLIENT C WHERE C.ClientCode = ' + globalAccountID), StatementCallback; SQL [SELECT * FROM CLIENT C WHERE C.ClientCode = 707] 的未分类 SQLException;SQL状态[S0001];错误代码[245];将 varchar 值“YTLQVLBK”转换为数据类型 int 时转换失败。嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:将 varchar 值“YTLQVLBK”转换为数据类型 int 时转换失败。
解决方案
问题出在这段代码中:
C.ClientCode = 707
更具体地说,您正在将整数与字符串进行比较。根据 SQL Server数据类型优先级规则,这意味着C.ClientCode
在进行比较之前将列转换为整数。
解决方案是转换707
为字符串(varchar)类型。你可以这样做:
'SELECT * FROM CLIENT C WHERE C.ClientCode = ''' + globalAccountID + ''''
推荐阅读
- customization - 自定义spring boot的证书错误消息
- swift - NSGraphicsContext 在 macOS 控制台工具上泄漏内存
- go - 如何获取与 WaitGroup 关联的 goroutine 的数量?
- sql-server - T-SQL 表的结构
- reactjs - 如何将 RTK 查询放入存储/切片?
- c# - 从 USB 复制文件并且 USB 断开连接时如何捕获错误
- azure - 跳过天蓝色函数事件中心输出
- sql - 将日期字段从平面文件导入到 sql
- python - Plotly control relative lengths of each axis
- node.js - 处理nodejs中子域的升级请求