首页 > 解决方案 > 将一系列不同单引号的字符转换为nvarchar

问题描述

我正在研究一个 SQL 查询,该查询使用多个查询,这些查询使用临时表来为最终报告查询准备所需的数据。一个使用 DevExpress 报告引擎的应用程序,根据一些预先设置自动生成一个“where”子句。所需过滤器的结果是这样的:

-- the part "where 1=1" is not generated. it is added for the purpose of visualizing and demonstrating
where 1=1  AND (@inv IN(4)) AND (@date = convert(datetime, '2021-02-21 23:59:59:000', 121) )

我想将生成的过滤器转换为 nvarchar 以进行更远的字符串处理,但是日期转换函数中的单引号将始终破坏用单引号包围语句以进行转义的任何尝试。

所以我的问题是,考虑到我有这样的声明:

AND (@para1 IN(4)) AND (@date = convert(datetime, '2021-02-21 23:59:59:000', 121) )

如何使用 SQL Server 将其作为 nvarchar 类型的字符串处理以进行进一步解析?知道我无法控制生成过滤器字符串的应用程序的代码

编辑2:

另外知道仅允许在开头和结尾添加引号,并且生成过滤器的应用程序是已编译的应用程序。该应用程序采用带有占位符 {0} 的原始 SQL 查询来填充生成的过滤器。不幸的是,该应用程序不允许使用应该是 {1} 的下一个占位符,所以我只能使用占位符 {0} 来使用整个过滤器字符串。因此,如果 SQL 或想法中有一些东西可以将上面提到的生成的过滤器字符串转换为 nvarchar,那么我可以编写一个函数来获取每个过滤器的值并将它们重用到我的 SQL 查询中

标签: sql-serverdevexpressnvarcharsingle-quotes

解决方案


推荐阅读