我知道在Mysql中是CONCAT,在MSSQL中我做不来
已知三张数据表,
一张存储着 网站频道ID和频道名称
一张存储着 网址栏目ID和栏目名称
一张是存用户表,有用户ID和用户权限
现在假设张三的权限是如下:$P频道ID@L栏目ID|权限名称,栏目ID|权限名称...
$P1@L50|Manage,L50|Input,$P4@L11|Input,L9|Input,L10|Input,$P6@L32|Manage,
我该如何使用SQL语句读出张三所拥有权限的栏目名称?
我的SQL如下,但发生错误:select ChannelName from Channel where '$p'+ChannelID+'@' in ($P1@L50|Manage,L50|Input,$P4@L11|Input,L9|Input,L10|Input,$P6@L32|Manage,) order by OrderID我该咋改这语句?

解决方案 »

  1.   

    我是说Mssql如何解决这个问题,类似与Mysql中是CONCAT效果
      

  2.   

    连接字符串,用加号就可以了。
    declare @var1 varchar(10)
    set @var1 = 'abc'
    declare @var2 varchar(10)
    set @var2 = 'cde'
    declare @var varchar(40)
    select @var = @var1 + @var2
    print @var还可以是;
    declare @var1 int
    set @var1 = 123
    declare @var2  int
    set @var2 = 456
    declare @var varchar(40)
    select @var = cast(@var1 as varchar(10)) +cast( @var2 as varchar(10))
    print @var
      

  3.   

    你提供些数据,把想要的结果展示下。。就会有T-SQL帮你写出来了。
      

  4.   

    select ChannelName from Channel where '$P1@L50|Manage,L50|Input,$P4@L11|Input,L9|Input,L10|Input,$P6@L32|Manage,' like '%$p'+ChannelID+'@%'
      

  5.   

    select ChannelName from Channel where '$p'+ChannelID+'@' in ($P1@L50|Manage,L50|Input,$P4@L11|Input,L9|Input,L10|Input,$P6@L32|Manage,) order by OrderID这语句错在那儿了,是不是要在in后的括号中加单引号?,但是加了也不对呀,或者是不是要把$P1@L50|Manage,L50|Input,$P4@L11|Input,L9|Input,L10|Input,$P6@L32|Manage,字符串强制转换成varchar,但不知道该如何转换
      

  6.   

    SQLCenter你的SQL语句执行后发生了"将varchar值'%$p'转换为数据类型为int的列时发生语法错误"的提示
      

  7.   

    7L:like '%$p'+ltrim(ChannelID)+'@%'
      

  8.   

    谢谢,SQLCenter的SQL运行起来了!
      

  9.   

    有没有人又传世的服务端,我想假设一个局域网的传奇世界玩玩,谢谢了!有全套的发我邮箱[email protected]