javascript - 节点 Mssql 模块错误:RequestError:将数据类型 nvarchar 转换为 bigint 时出错
问题描述
当我尝试使用此查询时,我在节点 js 上使用 mssql 模块:
const search = await mssql.query`SELECT
numpis,
datadm,
r006esc.nomesc
FROM
r034fun
join r006esc on (r006esc.codesc = r034fun.codesc)
WHERE
CONCAT(numcad, '-', tipcol, '-', numemp) = (
SELECT
TOP 1 CONCAT(numcad, '-', tipcol, '-', numemp)
FROM
r034fun as tbl2
WHERE
tbl2.numpis = r034fun.numpis
ORDER BY
datadm DESC
)
AND NUMPIS IN(${pisString});`
它返回错误:
RequestError:将数据类型 nvarchar 转换为 bigint 时出错。
但是当我在一个 SQL 编辑器中运行时,比如beekeper,它可以完美运行。
查询时使用的 pisString:
let pisString = ``
await object.forEach((element, index) => {
if (index !== object.length - 1) pisString += `${element.numpis},`
else pisString += `${element.numpis}`
})
有什么帮助吗?预先感谢。
解决方案
我发现问题出在哪里,要在 IN 语句中找到许多值,我必须传递一个值数组,而不是像我正在做的那样传递[123, 456, 789]
一个字符串。123, 456, 789
mssql 模块将字符串作为单个值而不是多个值读取。
推荐阅读
- java - 在 iBatis DBCP 数据源上设置 connectionInitSqls
- python - Matplotlib:将两个 y 轴围绕零对齐
- scala - 为什么方法需要“抽象覆盖”修饰符
- javascript - window.onload 不会覆盖原型函数
- javascript - 替换 escape() 和 unescape() 以及已存储字符串的后果
- ecmascript-6 - 对象数组过滤器优化
- python-3.x - 熊猫迭代非常慢
- django - 使用通配符子域将 docker 连接到 docker 容器
- java - 将数组返回到另一个类
- java - 如何解决“request.getSession().getId()”返回“32 个字符的会话 ID + (.test)”的会话 ID 问题