我有一個字段表,表示該行中的數據是否有效。該字段包含一個不確定長度的字符串。我需要一個查詢,只會拉出行中所有字符都是N的行。這個字段的一些可能的例子。SQL字符串只包含
NNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNN
NNNNNEEEENNNNNNNNNNNN
NNNNNOOOOOEEEENNNNNNNNNNNN
請在明信片上提出任何建議。
非常感謝
我有一個字段表,表示該行中的數據是否有效。該字段包含一個不確定長度的字符串。我需要一個查詢,只會拉出行中所有字符都是N的行。這個字段的一些可能的例子。SQL字符串只包含
NNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNN
NNNNNEEEENNNNNNNNNNNN
NNNNNOOOOOEEEENNNNNNNNNNNN
請在明信片上提出任何建議。
非常感謝
這應該做的伎倆:
SELECT Field
FROM YourTable
WHERE Field NOT LIKE '%[^N]%' AND Field <> ''
它在做什麼是一個通配符搜索,細分:
的LIKE將找到記錄中,其中字段包含比其他字符N在現場。因此,我們將NOT應用於此,因爲我們只對不包含除N以外的字符的記錄感興趣。Plus是用於過濾空白值的條件。
SELECT *
FROM mytable
WHERE field NOT LIKE '%[^N]%'
我不知道您正在使用哪種SQL方言。例如,Oracle有幾個可能使用的功能。與Oracle,你可以使用像條件:
WHERE LTRIM(場,「N」)=「」
的想法是修剪出所有N的,看看結果是空字符串。如果您沒有LTRIM,請檢查您是否有某種TRANSLATE或REPLACE功能來執行相同的操作。
另一種方式來做到這一點可能是來挑選你的字段的長度,然後通過填充空字符串,以構建比較值N.也許是這樣的:
WHERE字段= RPAD(「」,場,「N)
Oracle用N填充空字符串,並從第二個參數的長度中挑選填充字符數。或許,這也工作:
WHERE字段= RPAD(「」,長度(場),「N)
我沒有測試過這些,但希望這會給你一些想法如何解決你的問題。我想如果你有很多行,並且你沒有其他的WHERE條件來選擇合適的索引,那麼這些解決方案中的很多都會有不好的表現。
擊敗我吧! – Quassnoi 2010-12-23 12:23:24
多數民衆贊成票...我想我只是有一個糟糕的一天,因爲我知道這一切:S – 2010-12-23 12:25:31