表如下:
id name
1 赠品 2 礼品 3 姑娘
如果我用以下 sql 直接在终端上敲 select * from table where name not like '%赠品%' 结果会返回: id 为 2 和 3 的记录。
目前的需求是:
我的这个 sql 不直接写在程序里,而是写在文本文件中。 文本文件是 vim 写的,编码格式是 utf-8 的,这样在程序读这个文本文件的时候,“赠品”这两个中文词肯定会出错。读出来运行 sql 肯定出来的也是这三条记录,没有达到过滤的目的。
我想要的结果:
1.不更改 vim 编码环境,不然后期维护 sql 很麻烦。因为数据库中,需要用中文排除的记录比较多。 2.我还是想用 sql 直接写。想了下,数据库编码是 gbk 的,如果我把“赠品”这两个字的用 gbk 编码后,转换成 16 进制的,应该是可行的。可是在 google 查过之后,还是没有达到预期效果。 google 的解决方法是: f9 c6 b7 select * from table where name not like '%'+CHAR(0xd4)+CHAR(0xf9)+CHAR(0xc6)+CHAR(0xb7) +'%'
希望得到帮助!