zoukankan      html  css  js  c++  java
  • 使用表达式避免拼接SQL语句

    在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串

    如下表

    商品ID 类别ID
    1 1
    2 1
    3 2
    4 3
    5 3

    如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了

    --@类别ID为传入的参数
    DECLARE @Sql NVARCHAR(500)
    SET @Sql='SELECT * FROM 商品'
    IF(@类别ID!=0)
        SET @Sql=@Sql+'WHERE 类别ID='+Cast@类别ID as NVARCHAR(20))
    EXEC (@Sql)

    这样的方法不仅要对数据类型转换、引号配对而且语法检查也需要通过PRINT语句输出后进行检查,最要命的是如果拼接的语句是对临时表操作,由于EXEC是独立上下文运行的,导致外部无法访问拼接语句生成的临时表

    其实可以通过表达式优化这句SQL,写成如下形式即可避免拼接SQL

    SELECT * FROM 商品 WHERE @类别ID=0 OR 类别ID=@类别ID
  • 相关阅读:
    sysctl.conf文件详解
    linux下高并发网络应用注意事项
    linux 异常
    myeclipse 上安装 Maven3
    windows 系统相关配置
    常用DOS命令总结
    豆瓣爬虫Scrapy“抄袭”改写
    vue基本配置和生命周期
    面试知识点
    ubuntu18.04国内软件源
  • 原文地址:https://www.cnblogs.com/overload/p/3724890.html
Copyright © 2011-2022 走看看