回 帖 发 新 帖 刷新版面

主题:求助:T-SQL语言有关like的使用问题

假设有SQL中有一数据库test,test库中有一表XS,结构和下:

    学号 char(3) 姓名 char(6) 专业 char(10)

    内容如下:
             学号 姓名    专业
             1    张三丰  通信
             2    李四五  电子电气
             3    王五六  计算机

    有如下SQL语句:

                  use test
                  declare @a char(6)
                  set @a="三"
                  select * from xs where 姓名 like @a
                  go

    执行上述语句后,一条记录都没查到,如果执行select * from xs where 姓名 like '%三%'
就能显示出第一条记录。
    现在的问题是在like匹配中如何使用到@a变量,我用过了以下格式都不行:

    like '%@a%'
    like '%'+@a+'%'

    以上两种方法都不行,请问应该如何写这个命令,并且能用到@变量,让它等价于like '%三%'的结果集。

    谢谢大家的帮助!

回复列表 (共6个回复)

沙发

在vfp中:
set exact off
use XS
loca for 姓名='三'
brow

板凳

不是在VFP中,是在SQL中,或者是在VFP中用SQLEXEC执行的时候,是去找SQL Server数据库中的数据的时候。谢谢你的帮助!

3 楼

set @a="%三%"


或者


set @a="三"
set @a="%" + @a + "%"

不就OK了嗎?為什麼非要放在指令中加呢?

4 楼

剛剛試了:
select * from xs where 姓名 like '%'+@a+'%'
是可以的啊。

5 楼


谢谢你,但是我刚才在SQL里的查询分析器试了,语句是一直能执行的,但是得到的结果却不是正确的结果。

6 楼

谢谢,这个问题我自己已经解决了,原来是这样的,因为变量值的类型是char(6),所以,在后面的赋值是小,实际是小加上空格共凑齐6个组成,只要把尾随的空格去掉就行了.你们的办法都对,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册