我試圖檢查郵政編碼是否有效。示例代碼中的郵政編碼無效。所以它不應該返回任何值。Bug UPPER(變量)
postcode := '1059NJ';
SELECT P.POSTCODE INTO test3
FROM POSTCODE P
WHERE P.POSTCODE = UPPER(postcode)
AND P.CITY = INITCAP(LOWER('Amsterdam'))
AND P.STREET = INITCAP(LOWER('Aalsmeerweg'))
AND 14 BETWEEN P.MINNUMBER AND P.MAXNUMBER
AND(NUMBERTYPE = 'even' OR NUMBERTYPE = 'mixed');
DBMS_OUTPUT.PUT_LINE(test3);
然而,不是沒有返回,它返回
1059AJ
這是有效的郵政編碼。它不應該這樣做。
這裏有趣的是,如果我把郵政編碼放在''符號裏面,它實際上不會返回任何東西。
SELECT P.POSTCODE INTO test4
FROM POSTCODE P
WHERE P.POSTCODE = UPPER('1059NJ')
AND P.CITY = INITCAP(LOWER('Amsterdam'))
AND P.STREET = INITCAP(LOWER('Aalsmeerweg'))
AND 14 BETWEEN P.MINNUMBER AND P.MAXNUMBER
AND(NUMBERTYPE = 'even' OR NUMBERTYPE = 'mixed');
DBMS_OUTPUT.PUT_LINE(test4);
這是一個Oracle錯誤嗎?
嘗試在輸入表上命名'postcode'變量而不是列名。 –
這實際上有用,非常感謝!我一直堅持了幾個小時。 –
不相關,但爲什麼'initcap(lower())'比僅僅'initcap()'大? 'lower()'似乎有點無意義。即使你沒有真正的字符串文字。 –