
如上圖,在查詢字段加上大寫字母N,就能查詢出結果。很多時候都是不用也能查詢出數據,但是也有列外,
如下圖:

1和2,3和4分別是相同的查詢語句,但是1和2中只有2能查詢出數據,3和4中只有4能查詢出數據。
然而在1和3查詢前分別加上大寫的N就能查詢出數據。一般查詢中文,或不知原因的查詢不出數據可以試試加上N。
簡單了解下N的作用:
N‘zmdadmin’ 代表是一個Unicode字符常量(雙字節,一個字符占兩個字節),而沒有N的代表字符常量(單字節,一個字符占一個字節)。
而中文一個漢字就要占兩個字節,所以要用N'xxx'強制轉換為Unicode編碼的字符,從而避免亂碼。但一般數據庫默認編碼及排序規則已經設置好了。
數據庫從英文版或者改變默認編碼時需注意原有已存在數據的編碼。
---------------------------------------------------------------------------------------------------------------------------------------------
那原因很明顯就是編碼問題導致查詢為空,但兩句sql一模一樣,而且即使從鍵盤重新輸入1和3的zmdadmin也還是一樣。
復制到網頁input進行查詢:

也未能查詢出數據,但是有一個發現:輸入的值和input的value值居然不一樣,后面多了個‬
輸入的值后面既沒有空格也沒有其他特殊字符,而且點擊也選不中(又沒有)此值【斷點從后台跟蹤,也看不到后面跟有‬,但實際是有,所以查詢不出數據】

網上查詢:https://blog.csdn.net/w390058785/article/details/80692930(他猜想字符‬字符是用於占位的?)。
其實‬是Unicode控制字符(就是特殊的Unicode字符),PDF: 讓前面運算法則結束的字符。
很多時候input標簽明明沒有值也沒有空格可總是不為空可考慮此問題。
結論:導致兩句一樣sql或網頁查詢不出數據(不包括數據庫編碼及網頁或系統其他問題),可考慮是由於字符串格式(復制操作)導致。具體可將字符串復制到網頁input里檢查。
上面操作中查詢為空即為從Excel單元格復制的,至於鍵盤輸入的那個zmdadmin是需要將username及后面的一起重新輸入
