Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 理解SQL Server查询中的强制转换/替换查询_Sql Server - Fatal编程技术网

Sql server 理解SQL Server查询中的强制转换/替换查询

Sql server 理解SQL Server查询中的强制转换/替换查询,sql-server,Sql Server,我从一个节点项目继承了一些要更新和处理的SQL查询。我的SQL Server数据库中的部分SQL查询出错。但在我解决这个错误之前,我想更好地了解我的查询的一部分实际上在做什么,我经常使用Node和JavaScript,但仍在学习SQL 这是相关SQL Server查询的一部分: AND CAST(REPLACE(LEFT( RM20101.DOCNUMBR, CHARINDEX('-', RM20101.DOCNUMBR)), '-', '') AS INT) = 481492) a WHERE

我从一个节点项目继承了一些要更新和处理的SQL查询。我的SQL Server数据库中的部分SQL查询出错。但在我解决这个错误之前,我想更好地了解我的查询的一部分实际上在做什么,我经常使用Node和JavaScript,但仍在学习SQL

这是相关SQL Server查询的一部分:

AND CAST(REPLACE(LEFT( RM20101.DOCNUMBR, CHARINDEX('-', RM20101.DOCNUMBR)), '-', '') AS INT) = 481492) a
WHERE a.DocumentAmount != 0

上面的代码发生了什么?它是否在寻找RM20101.DOCNUMBR的值,然后对其进行转换,以便用空字符串替换-,然后将其转换为INT?是否将该值赋给一个变量?

这是首先从“-”分隔符左边的Doc number中查找CHAR索引,然后取该部分的左边部分,并将“-”分隔符替换为空,然后与值481492进行比较

Cast正在执行从varchar到Int数据类型的转换。
Replace正在替换delimeter。

给定“12345-67890”,它接受“12345”并将其强制转换为int。引用的部分本身无效,我假设您已选择。。。从…起where something AND cast=481492 a where a.mount!=没有。它没有把这个值赋给a。这是JOIN语句吗?它正在比较转换后的值=481492。联接的别名为a。a、 DocumentMount很可能是联接表中的一列。如果您显示整个查询,我们会更好地理解,而不是猜测。在大多数语言中,括号肯定会匹配。由于右括号比右括号多,因此可以合理地假设上述代码的某些部分与CASTREPLACE无关。。。我已经添加了上面代码的较大上下文。@Ademo它本身仍然是无效的部分。或者添加更多,直到内部选择,或者,如果没有内部选择,原则上是无效的。