Javascript 转换节点项目中两个SQL数据库之间传递的值

Javascript 转换节点项目中两个SQL数据库之间传递的值,javascript,sql,Javascript,Sql,在我的节点项目中,我查询一个SQL数据库,然后根据需要转换数据,然后将其写入另一个SQL数据库。为了处理需要向接收数据库写入字符串值,但该值可能为null(我不想向数据库写入“null”)的情况,我这样处理: const sqlStringOrNull = function (value) { return value ? "'" + value + "'" : null; }; 这在发送db使用“varchars”的前几个情况下运行良好。但是现在我遇到了这样一种情况:被查询的数据库具有c

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

const sqlStringOrNull = function (value) {
  return value ? "'" + value + "'" : null;
};
这在发送db使用“varchars”的前几个情况下运行良好。但是现在我遇到了这样一种情况:被查询的数据库具有
char(9)
值。而且,据我所知,即使值本身是,比如说,4个字符长,剩余的字符也将作为空格传递。因此,在我当前的实现中,虽然我没有收到错误,但当我在控制台上记录传递的查询时,我会看到如下值:
'1234'

我的问题是,首先,这是怎么回事?SQL Server中的
char(9)
值是否总是有9个字符,即使实际值小于9个字符

如果是这样的话,在这种情况下,我如何修改我的函数来修剪值?我尝试的是:

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

这没有给我任何错误,但它似乎也没有按照预期修剪值。我错过了什么?如何处理数据,以便当它是字符串时,它最终被修剪?

是,具有
CHAR
datatype的列将始终返回固定长度数据,用空空间填充任何短值

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

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

最后我得到了一个
值。当我运行记录时,trim()不是一个函数
错误。我想知道我是否还需要通过检查typeof=='string'来确定?是的,我假设您的所有值都是字符串。已编辑代码以处理其他数据类型。已尝试更新代码。还是有同样的错误。我尝试了这个方法,但得到了一个不同的错误:
constsqlstringornull=function(value){if(value&&(typeof value=='string'){return value.trim();}else if(value&&(typeof value!='string'){return value'“+value+”;}else if(!value){return null;}