2017-07-24 86 views
-3

我想根據列值查找記錄。Postgresql從哪裏選擇

我知道如何使用select from where命令來執行此操作。

但是,我正面臨一個問題,我想查找值的列的值。

問題是該值有一個/在它。

因此,這裏的命令:

SELECT COLA FROM TABLENAME WHERE COLB = cotton/candy; 

這是給我的一個問題,因爲列「棉花」不存在。

任何幫助將不勝感激。

提前感謝和問候,

+0

https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS –

回答

3

如果你用引號括這應該工作的價值,因爲它會尋找一個確切的字符串匹配:

SELECT COLA FROM TABLENAME WHERE COLB = 'cotton/candy'; 
+0

謝謝你的作品。 – nader

1

價值的內容不應該的問題在所有。

您的語法無論是否帶有/都無效。

COLB = cotton/candy; 

就是錯了,因爲

COLB = cotton; 

,因爲在兩種情況下你用'quotes for literals'

雖然有一個更廣泛的問題。說你寫:

COLB = '$1' 

其中$1是一些程序變量替換。然後有人發送價值');DROP TABLE COLA;--。哎呦!他們在你的數據庫上運行了一個命令並丟棄了你的表。這稱爲SQL injection並且爲了避免它,您應該確保在您的查詢中使用用戶提供或插值的全部綁定參數(「參數化語句」,「準備語句」)。

+0

您是否有Web企業應用程序的安全主題鏈接。 – nader