当前位置: 首页 > 面试题库 >

SQL in(@Variable)查询

卢雅惠
2023-03-14
问题内容

我有以下代码,问题是我的变量列表@LocationList本质上是一个csv字符串。当我将其用作(@LocationList)中whereLocationID的一部分时,它说它不是int(LocationID是int)。我怎样才能使该csv字符串在子句中被接受?

Declare @LocationList varchar(1000)
Set @LocationList = '1,32'

select Locations from table where Where LocationID in (@LocationList)

问题答案:

最有效的方法是使用动态SQL,例如提到rt2800(带有Michael Allen的注入警告)

但是,您可以创建一个函数:

ALTER  FUNCTION [dbo].[CSVStringsToTable_fn] ( @array VARCHAR(8000) )
RETURNS @Table TABLE ( value VARCHAR(100) )
AS 
    BEGIN
        DECLARE @separator_position INTEGER,
            @array_value VARCHAR(8000)

        SET @array = @array + ','

        WHILE PATINDEX('%,%', @array) <> 0 
            BEGIN
                SELECT  @separator_position = PATINDEX('%,%', @array)
                SELECT  @array_value = LEFT(@array, @separator_position - 1)

                INSERT  @Table
                VALUES  ( @array_value )

                SELECT  @array = STUFF(@array, 1, @separator_position, '')
            END
        RETURN
    END

并从中选择:

DECLARE @LocationList VARCHAR(1000)
SET @LocationList = '1,32'

SELECT  Locations 
FROM    table
WHERE   LocationID IN ( SELECT   *
                           FROM     dbo.CSVStringsToTable_fn(@LocationList) )

或者

SELECT  Locations
FROM    table loc
        INNER JOIN dbo.CSVStringsToTable_fn(@LocationList) list
            ON list.value = loc.LocationID

当您尝试从SSRS向PROC发送多值列表时,这非常有用。



 类似资料:
  • 描述 (Description) 我们可以使用由值组成的变量名来定义变量。 Example 以下示例演示了如何使用variable在LESS文件中保存另一个variable - <html> <head> <link rel = "stylesheet" href = "style.css" type = "text/css" /> <title>LESS Varia

  • 描述 (Description) 方法type()返回传递的变量的类型。 如果传递的变量是字典,那么它将返回字典类型。 语法 (Syntax) 以下是type()方法的语法 - type(dict) 参数 (Parameters) dict - 这是字典。 返回值 (Return Value) 此方法返回传递的变量的类型。 例子 (Example) 以下示例显示了type()方法的用法。 #!/

  • variable-type 一个非常简单的(仅 1 kb)高性能的用于做变量结构校验的 JavaScript 模块。 1. 安装 npm i --save variable-type Then import it. import VT from 'variable-type'; // ES6var VT = require('variable-type'); // ES5 with npm 2.

  • 实现效果 若加载不出来,请看链接。 用 JavaScript 和 CSS3 实现拖动滑块时,实时调整图片的内边距、模糊度、背景颜色,同时标题中 JS 两字的颜色也随图片背景颜色而变化。 涉及特性 :root var(--xxx):CSS 变量(CSS Variables) filter: blur() 事件 change、mousemove 过程指南 CSS 部分准备 声明全局(:root)的 C

  • Xdebug replaces PHP's var_dump() function for displaying variables. Xdebug's version includes different colors for different types and places limits on the amount of array elements/object properties,

  • Variable (已弃用) Variable 是早期添加到 RxSwift 的概念,通过 “setting” 和 “getting”, 他可以帮助我们从原先命令式的思维方式,过渡到响应式的思维方式。 但这只是我们一厢情愿的想法。许多开发者滥用 Variable,来构建 重度命令式 系统,而不是 Rx 的 声明式 系统。这对于新手很常见,并且他们无法意识到,这是代码的坏味道。所以在 RxSwift