ms sql 裡, ’abc’=’Abc’ 是傳回正確, 但怎麼寫才顯示出不正確?即 ’abc’必須等於’abc’才傳回是正確, 而不可是'abc’='Abc’, 如login name 輸入字元必須要完成相等.
1.
利用MS SQL Server 的varbinary 型別(可能為MS SQL Server專用型別),利用 CAST(‘w01’ AS varbinary) ,’w01’會變成(0x773031),也就是’w’的ASCII值+’0’的ASCII值+’1’的ASCII值,’W01’會變成(0x573031),如此便能區分(0x773031),( 0x573031)的不同.
以下列SQL 命令為例:
select cus_no from cus_cus where cast(rtrim(cus_no) as varbinary) = cast(‘A001’ as varbinary)
此時只會出現CUS_NO 只等於’A001’,而不包含’a001’
2.
這是定序問題,因為sql安裝時是不分大小寫的,解決方法如下:
gccollate="COLLATE Chinese_Taiwan_Stroke_CS_AS"
lcsql="select * from 資料表 where 欄位 &gccollate=?變數"
我知道是預設定序的問題,
不過改預設定序也會衍生一大堆問題.
3.
如果要mysql 區分大小寫有兩種方法
第一種:
在table的 column type指定為 binary
語法:
CREATE TABLE myTable (name CHAR(10) BINARY NOT NULL);
若已存在要改表格:
ALTER TABLE myTable MODIFY name CHAR(10) BINARY NOT NULL;
第二種方法:
請在查詢的時候,在語法上加上 BINARY
EX: select * from myTable where BINARY name='xxxx';
留言列表