zoukankan      html  css  js  c++  java
  • 数据库查询问题int型字段对应以Int型数值+','组成的nvarchar型字段

    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

    测试通过

  • 相关阅读:
    一次完整的HTTP事务的过程
    移动端事件
    canvas 在视频中的用法
    理解Vue
    改变console.log的输出样式
    百度下拉搜索案例
    Vue总结
    字符串、正则
    .Net Mvc框架知识点
    Lowest Common Ancestor of a Binary Tree -- LeetCode
  • 原文地址:https://www.cnblogs.com/biandande/p/939220.html
Copyright © 2011-2022 走看看