使用Sybase ASE 15.7(但我認爲這是MSSQLSERVER相同), 我只是面對這種奇怪的行爲:Sybase和選擇中的空字符串。奇怪的處理
比方說,我有一個非常簡單的2列的表:
create table testtable(
id int identity not null,
name varchar(50) null
)
它裏面,我會插入2個不同的價值觀和空幾次:
insert into testtable(name) select "VAL1"
insert into testtable(name) select "VAL1"
insert into testtable(name) select "VAL1"
insert into testtable(name) select "VAL1"
insert into testtable(name) select "VAL2"
insert into testtable(name) select "VAL2"
insert into testtable(name) select null
insert into testtable(name) select null
因此,這裏是我的表的內容:
select * from testtable
而且我獲得:
1 VAL1
2 VAL1
3 VAL1
4 VAL1
5 VAL2
6 VAL2
7 NULL
8 NULL
現在奇怪的事情開始,比方說,我想除了「VAL1」我會發出此查詢的所有值:
select * from testtable where name <> "VAL1"
我有2 VAL2線當然,但不是那些空。彷彿空和VAL1相等
5 VAL2
6 VAL2
當然,我知道我應該已經發出這樣的詢問:
select * from testtable where isnull(name, "") <> "VAL1"
爲什麼我在這裏發佈的原因是不是我想找到一個解決辦法(我知道它很好,並且從今年開始使用它),它更好地理解sybase「認爲」關於空值的方式,以及是否有人可以對基礎邏輯進行清晰的解釋,因爲自從多年以後我解決了它,但仍然我真的不明白這一點。
感謝和問候
ü可以檢查我的答案 – Chanukya
好吧,我知道了空值。因爲它不能與其他值進行比較,如果我在該列上發出搜索條件,則不會檢索它... – nico