栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将INT数据库字段与VARCHAR类型进行比较

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将INT数据库字段与VARCHAR类型进行比较

在SQL Server中,两种不同类型之间的比较是这样进行的:

  • 首先,根据数据类型优先级的规则比较这两种类型的优先级:

优先级较低的数据类型将转换为优先级较高的数据类型

  • 接下来,将优先级较低的类型强制转换为优先级较高的类型

  • 然后在优先级较高的类型的原始值和优先级较低的类型的转换后的值之间进行比较

为了便于讨论:将

INT
(优先级16,高)和a
VARCHAR
(优先级27,低)进行比较,方法是将
VARCHAR
to强制转换为to
INT
,然后将两者进行比较。

在您的情况下,虽然没有发生任何转换,因为发生的情况是该

@course
值被附加到了动态构造的上
@sql
。不用说,那是不好的。正确的解决方案是将
@course
as作为参数传递给动态SQL调用:

@course INT = null... SET @query = @query + 'Where course_id= @course';...exec sp_executesql @sql, '@course int', @course;

这是:

  • 更快 :参数化查询,而不是硬编码值
  • 更安全 :如果代码经过重构并且@counter成为可进行SQL注入的类型,则降低SQL注入的风险
  • 较少出错 :没有NULL值传播使整个结果无效的风险
    @sql


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号