2010-03-04 44 views
3

SELECT NAME FROM ABCD WHERE NAME LIKE 「+航空+%」 AND ROWNUM < = 10SELECT NAME FROM ABCD WHERE NAME LIKE 「+航空+%」 AND ROWNUM <= 10

什麼是在該行的語法錯誤。 .....選擇名稱從ABCD這是工作

+0

你的文字「+」字符 – Pavunkumar 2010-03-04 10:00:52

+0

,而不是'「+航空+%」檢查'更改爲'「+航空+%」'。 SQL中的字符串是單引號,而不是雙引號。 – 2010-03-04 10:02:10

+0

事實上,雙引號允許你指定列名,例如。 '創建表格測試(「我的列名」NUMBER);' – 2010-03-04 10:10:05

回答

1

雙引號圍繞文字?

文字和AND之間沒有空格嗎?

2

編輯:

con.prepareStatement(
    "SELECT name FROM abcd WHERE name LIKE '" + aero + "%' AND ROWNUM <= 10"); 

會發現所有的字符串開始與您的變量aero

獲取包含您的變量aero使用的字符串

con.prepareStatement(
    "SELECT name FROM abcd WHERE name LIKE '%" + aero + "%' AND ROWNUM <= 10"); 

您需要使用單引號代替雙引號中的所有字符串:

SELECT name 
FROM abcd 
WHERE name LIKE '+aero+%' 
    AND ROWNUM <= 10; 

如果雙引號在您搜索的字符串中使用'"+aero+%"'

如果您只想搜索包含aero的字符串,請使用'%aero%'

+0

無法正常工作。,。,。 pr = con.prepareStatement(「SELECT NAME FROM ABCD WHERE NAME LIKE'+ aero +%'AND ROWNUM <= 10」); – murali 2010-03-04 10:08:15

4

你需要單引號

SELECT NAME FROM ABCD WHERE NAME LIKE '+aero+%' AND ROWNUM <= 10 

而且之前也一個空格和。

UPDATE

目前尚不清楚,在你的問題正是你要搜索的內容。您可能需要以下其中一種代替:

SELECT NAME FROM ABCD WHERE NAME LIKE '"+aero+%"' AND ROWNUM <= 10 

SELECT NAME FROM ABCD WHERE NAME LIKE '%"+aero+"%' AND ROWNUM <= 10 

SELECT NAME FROM ABCD WHERE NAME LIKE '"%+aero+%"' AND ROWNUM <= 10 

...或其他一些變化。但重要的是,你應該用單引號將文字用雙引號括起來。

+1

謝謝...第二次工作 – murali 2010-03-04 10:34:30

0

您需要賦予表達式和AND運算符之間的字符。並給予單引號 正則表達式

0

如果你們稱是從一些程序代碼,下面是更容易,其中aero是可變的,並且%將作爲通配符。當Aero是ab,它將搜索'ab','abc', 'abcd', .......

"SELECT NAME FROM ABCD WHERE NAME LIKE '"+aero+"%' AND ROWNUM <= 10;" 
0

這是我不太清楚你的航空是否是一個字符串「航空」或程序中的一個變量的名稱。如果它是一個文字然後這樣做:

pr = con.prepareStatement 
     ("SELECT NAME FROM ABCD WHERE NAME LIKE 'aero%' AND ROWNUM <= 10"); 

如果它是一個變量,那麼你應該使用一個綁定變量。不僅語法更不易混淆,還可以防止SQL注入攻擊。我不是ASP的專家,但語法是一樣的東西:

pr = con.prepareStatement 
     ("SELECT NAME FROM ABCD WHERE NAME LIKE ?||'%' AND ROWNUM <= 10"); 
con.setString(1,aero); 
相關問題