使用mysql 2008数据查询条件中包含特殊字符时的问题

chinasoft_b 2010-03-28 05:24:26
1。WHERE name LIKE "%abc%"查询条件这样写时,只要一执行查询就给我变成了WHERE (name LIKE [%abc%])并且提示错误"列名%abc%"无效。


2。如果我的查询条件中包含特殊字符如这样去查询:where name like "%abc(东来东往)_-[By_DjV ReMix]%"; 应该如何把查询条件中的特殊字符给转义掉。。


很急。。昨晚搞了一个通宵没解决掉。所以现在来网吧发帖。求哥们儿帮好好回答一下。详细点。谢谢。
...全文
350 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-03-28
  • 打赏
  • 举报
回复
你可以把%, _ 写成 [%],[_]

1> select top 1 * from t1 where 'aaaa' like '%[%]%'
2> go
姓名|类别|时间
--|--|------------

(0 rows affected)
1> select top 1 * from t1 where 'aa%aa' like '%[%]%'
2> go
姓名|类别|时间
--|--|------------
张 |A |201001251730

(1 rows affected)
1>
--小F-- 2010-03-28
  • 打赏
  • 举报
回复
SQL SERVER中字符串插入,有那些字符是特殊字符,不能插入?数据库会自动处理吗?如果不能,数据库又提供了函数可以转化它们吗?DB-LIBRARY中的函数那个可以转化它们? 
---------------------------------------------------------------

特殊字符有很多,我不想一一說出.

只是告訴你方法,你自己用SQLServer提供的char函數轉義.

比方說:
select char(39) 代表單引號
select char(34) 代表雙引號

char函數中填寫的是該字符的asc碼.

欲想知道字符的asc碼,請用ascii函數:

比方說,我想知道&的asc碼:
select ascii('&') 這樣即可

得到的結果是38.

那麼你用:
select char(38)就可以表示&了.
---------------------------------------------------------------

一般特殊字符都是用char()函数来转义
比如对控制字符,在字符串中用 CHAR(13) 和 CHAR(10) 可以产生一个回车并生成一个新行。
chinasoft_b 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 acmain_chm 的回复:]

MySQL 没有 2008 这个版本,你用的是哪个版本?

另外不要用双引号

WHERE name LIKE '%abc%'

特殊字符给转义掉
\_ \%
[/Quote]

楼上的这位兄弟,由于当时发帖心急,把MSSQL打成了MYSQL 应该是MSSQL 2008 现在我更改不了帖子了所以不能更正过来。

我想问一下为什么特殊字符在MYSQL中不用转就能通过,而在MSSQL就必须要转呢。另外MSSQL中查询时哪些字符算特殊字符,应该如何转。
ACMAIN_CHM 2010-03-28
  • 打赏
  • 举报
回复
MySQL 没有 2008 这个版本,你用的是哪个版本?

另外不要用双引号

WHERE name LIKE '%abc%'

特殊字符给转义掉
\_ \%
SQL77 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 maoweiwer 的回复:]
首行说一句,感觉楼上的几位帮助及提示,现在问题解决了。但只是解决了部门,还是先说一下我的不解吧。
如果是用的MYSQL数据库 如果我的查询条件中包含有特殊字符如[ 则MYSQL也能查询出来。但如果是MSSQL 则不能查询出来,必须把[替换成[[]才能查询出来,这是因为数据库本身的差异吗?求解。。。

再有,我想问一下,MSSQL中还有哪些特殊字符是查询条件中如果包含该特殊字符就必须替换转义的……
[/Quote]
SQL中字符是 ''

MYSQL不懂帮顶
chinasoft_b 2010-03-28
  • 打赏
  • 举报
回复
首行说一句,感觉楼上的几位帮助及提示,现在问题解决了。但只是解决了部门,还是先说一下我的不解吧。
如果是用的MYSQL数据库 如果我的查询条件中包含有特殊字符如[ 则MYSQL也能查询出来。但如果是MSSQL 则不能查询出来,必须把[替换成[[]才能查询出来,这是因为数据库本身的差异吗?求解。。。

再有,我想问一下,MSSQL中还有哪些特殊字符是查询条件中如果包含该特殊字符就必须替换转义的,现在我只遇到了[ 网上有人说_ 也不是但我查询条件中有_ 也能查询出来。。更不解。。谢谢。。求解。。
nianran520 2010-03-28
  • 打赏
  • 举报
回复
贴上测试数据
chinasoft_b 2010-03-28
  • 打赏
  • 举报
回复
呵呵。。几分钟没上来。楼上的这几位都把我的第一个问题给解决了。自己疏忽了。现在用单引号确实可以,但第二个问题呢。就像楼上的这位兄弟这样去查询肯定是查询不出来的。因为其中的[没有给转义掉 我知道可以用[[]这样转义,但后面的空格呢V R之间 如何解决。
nianran520 2010-03-28
  • 打赏
  • 举报
回复
where name like '%abc(东来东往)_-[By_DjV ReMix]%'
bancxc 2010-03-28
  • 打赏
  • 举报
回复
WHERE name LIKE '%abc%'
bancxc 2010-03-28
  • 打赏
  • 举报
回复
WHERE name LIKE '%abc%'

换成单引号
chinasoft_b 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql_xep 的回复:]

mysql 呵呵,没弄过

试试 where name like ‘%abc%’
[/Quote]
不好意思,打错字了。是mssql 2008 不是mysql
sql_xeppp 2010-03-28
  • 打赏
  • 举报
回复
mysql 呵呵,没弄过

试试 where name like ‘%abc%’

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧