2

我的同事写了这个 SQL 语句,我很难理解它。在 where 子句中使用冒号的目的究竟是什么?

WHERE MGM_YYMM like :AS_YYMM

完整查询:

SELECT  A.MGM_YYMM,
        A.MGM_DATE,
        A.MGM_GB,
        A.INDATE,
        A.SUDATE,
        A.EMPNUM,
FROM  SE_MAGAM A(NOLOCK)
WHERE MGM_YYMM like :AS_YYMM
ORDER BY MGM_YYMM DESC
4

1 回答 1

4

它是一个绑定变量。

程序(或任何其他发出查询的程序)将为 :AS_YYMM 分配一个值,在这种情况下,该模式与 MGM_YYMM 列匹配。

这些类型的参数化查询很有用,因为它们可以准备/解析/编译/分析一次,然后针对不同的输入运行多次,从而减少开销(与每次新查询相比)。还有助于防止 SQL 注入(与从用户输入构建动态 SQL 语句相比)。

于 2012-11-02T02:32:03.360 回答