数据库查询问题--int型字段对应以Int型数值+','组成的nvarchar型字段
2007-10-26 22:37
369 查看
webclassparent(int型)和webclasssubord(nvarchar型)来表示父栏目和子栏目,客户的需求是要读出某个父类下面所有子栏目的内的新闻,我最初想到的是:select * from article where articleclass in(select webclasssubord from webclass where webclassid=15) 说明:webclasssubord是由子栏目id加“,”组成的一个nvarchar型的字符串。
但是出错了,提示是:"将 nvarchar 值 '16,17,18,24,41' 转换为数据类型为 int 的列时发生语法错误"为什么呢?
后来请教了老宋才发现,直接用in (select webclasssubord from webclass where webclassid=15)这个时候读出来的是一个整体的nvarchar,无法使用In来查询int型数字是否包含在这个nvarchar里面,但是如果把对应的这个字段读到一个变量里 然后,比较这个变量里是否articleclass这个int型字段的值,所以做了以下修改:
declare @t nvarchar(100)
select @t= (SELECT webclasssubord FROM webclass WHERE webclassid = 15)
select @t='SELECT * FROM article WHERE Articleclass IN ('+@t+')'
execute(@t)
go
测试通过
但是出错了,提示是:"将 nvarchar 值 '16,17,18,24,41' 转换为数据类型为 int 的列时发生语法错误"为什么呢?
后来请教了老宋才发现,直接用in (select webclasssubord from webclass where webclassid=15)这个时候读出来的是一个整体的nvarchar,无法使用In来查询int型数字是否包含在这个nvarchar里面,但是如果把对应的这个字段读到一个变量里 然后,比较这个变量里是否articleclass这个int型字段的值,所以做了以下修改:
declare @t nvarchar(100)
select @t= (SELECT webclasssubord FROM webclass WHERE webclassid = 15)
select @t='SELECT * FROM article WHERE Articleclass IN ('+@t+')'
execute(@t)
go
测试通过
相关文章推荐
- 查询数据库后,datatable的字段类型问题
- 普元 EOS Platform 7.6 Mysql5.0 表里字段有默认值为0000-00-00 00:00:00的时间戳,查询数据库表对应的实体报错
- 使用Spring Data Jpa 遇到 数据库字段以 from 开头,分页查询失败的问题
- 解决poco与数据库表字段非一一对应的问题
- JPA对应的数据库字段大小写问题
- 数据库模糊查询时,一个字段对应多个模糊值的思路
- jdbcTemplate查询数据库金额字段的精度问题:ResultSet中取值
- 跨数据库查询导致的 无法绑定由多个部分组成的标识符 问题的解决办法
- 类型匹配问题:数据库字段类型与java数据类型的对应关系
- 性别字段在数据库中存储数字,查询时,如何查询出数字对应的男和女?(case when的应用)
- 数据库中 关于不能用in 不能用exist 等关键字 查询不出现字段的问题
- FireDac 与数据库连接时字符集及对应的字段类型问题
- 查询各数据库表字段注释、及表对应的字段类型
- 关于数据库中字段为日期的模糊查询问题
- 查询数据库中的表,返回字段相对应的数据类型!
- asp读取数据库字段比较数值大小的问题
- 单点登录cas常见问题(十二) - Principal的id对应数据库表中的哪个字段?
- MS SQL 查询数据库中所有索引以及对应的表字段 SQL Server Profiler性能跟踪
- mysql查询:同一个字段满足多个条件的对应字段
- java中常见数据库字段类型与java.sql.Types的对应