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

    测试通过

  • 相关阅读:
    Java的一些命名规范
    Java利用泛型实现堆栈
    Java 将二进制打印成十六进制
    String对象的一些基本方法
    Java异常使用指南
    JAVAEE期末项目------文章发布系统
    java14周
    java第11周
    java第八周作业
    java第七周----json
  • 原文地址:https://www.cnblogs.com/biandande/p/939220.html
Copyright © 2011-2022 走看看