繁体   English   中英

转换 Node 项目中两个 SQL DB 之间传递的值

[英]Transforming values passing between two SQL DBs in Node project

在我的 Node 项目中,我正在查询一个 SQL 数据库,然后根据需要转换数据,然后将其写入另一个 SQL 数据库。 为了处理我需要将字符串值写入接收数据库但该值可能为空的情况(并且我不想将“null”写入数据库),我是这样处理的:

const sqlStringOrNull = function (value) {
  return value ? "'" + value + "'" : null;
};

这在发送数据库使用“varchars”的前几种情况下效果很好。 但是现在我遇到了被查询的数据库具有char(9)值的情况。 而且,据我所知,即使值本身是 4 个字符长,其余字符也将作为空格传递。 因此,在我当前的实现中,虽然我没有收到错误,但当我通过控制台记录我的查询时,我看到如下值: '1234 '

我的问题是,首先,这是正在发生的事情吗? SQL Server 中的char(9)值是否总是有 9 个字符,即使实际值小于该值?

而且,如果是这样,在这种情况下我如何修改我的函数以修剪值? 我试过的是这样的:

const sqlStringOrNull = function (value) {
  if (value) {
    value = "'" + value + "'";
    return value.trim();
  } else if (!value) {
    return null;
  }
};

这没有给我任何错误,但它似乎也没有按预期调整值。 我在这里缺少什么? 我如何处理数据,以便当它是一个字符串时,它最终会被修剪?

是的,具有CHAR数据类型的列将始终返回固定长度的数据,并用空白填充任何短值。

至于你的第二个代码块,你应该在添加单引号之前调用.trim() ,例如:

const sqlStringOrNull = function (value) {
  if (value) {
    return "'" + (value.trim ? value.trim() : value) + "'";
  } else {
    return null;
  }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM