關於char n 型別引起的字串判斷問題

2021-05-04 15:35:11 字數 448 閱讀 1029

oracle的表a中定義了乙個字段 flag,型別為 char(2), 用於儲存乙個標誌,取值『y』『n』。

在資料庫中增加新紀錄該字段取『y』『n』;

執行sql語句 select decode(flag,'y','是','n','否','否') as flag1 , flag from a;

結果會是什麼呢? flag1為'是'的時候flag一定為y?

不是的,結果中flag1欄位全部為預設值'否'。

原來char(2)型別要求必須是兩字元,即使你輸入『y』,oracle會自動給你加個空格轉化為'y ';

但是怪就怪在 select flag from a where flag='y' ;也能返回響應的結果;

也就說在條件語句中 'y'='y '成立 而decode函式卻認為二者不相等;

所以在做標誌位的列,要麼用char(1) 要麼用varchar(2)

mysql字串型別 mysql 字串型別

字串型別 字串型別指char varchar binary varbinary blob text enum和set。該節描述了這些型別如何工作以及如何在查詢中使用這些型別。型別大小用途 char0 255位元組定長字串 varchar0 65535 位元組變長字串 tinyblob0 255位元組...

js 不是空字串的空字串引起的bug

今天在用js的時候,使用了兩段完全相同的 可是乙個報錯,乙個好好的 如下 注意,這兩段 一模一樣 眼睛看起來是的 但是執行結果卻是 你們在執行時,要複製我的 不要自己敲,就能出現上面的結果。這個問題困擾了我好幾個小時,我在想,到底是什麼原因呢?為了解決這個問題,我將兩段 各種換來換去,發現下面的和上...

字串型別

c 定義了乙個內容豐富的抽象資料型別庫,其中,string和vector是兩種最重要的標準庫型別,前者支援可變長字串,後者則表示可變長的集合。還有一種標準庫型別是迭代器,它是string和vector的配套型別,常被用於訪問string中的字元或vector中的元素。本篇將介紹string型別。標註...