您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

为了便于讨论:将INT(优先级16,高)和a VARCHAR(优先级27,低)进行比较,方法是将VARCHARto强制转换为toINT,然后将两者进行比较。

在您的情况下,虽然没有发生任何转换,因为发生的情况是该@course值被附加到了动态构造的上@sql。不用说,那是不好的。正确的解决方案是将@courseas作为参数传递给动态sql调用

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

这是:

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

解决方法

我有以下存储过程,没有编写完整的存储过程,但其中一些是:

@course int = null,SET @query = @query + 'Where course_id='+ cast(@course as varchar)

我想知道何时我将@course转换为VARCHAR类型,而course_id数据库中的我是INT类型-比较如何进行?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
@course int = null,SET @query = @query + 'Where course_id='+ cast(@course as varchar)

这是:

我有以下存储过程,没有编写完整的存储过程,但其中一些是:

我想知道何时我将@course转换为VARCHAR类型,而course_id数据库中的我是INT类型-比较如何进行?

这是:

其他 2022/1/1 18:53:18 有413人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶