我下面的查詢:「?」SQL查詢,如果參數爲null,選擇所有
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
現在我想,如果爲NULL,所有記錄必須被選中。 我如何在SQL中實現這一點? 感謝
我下面的查詢:「?」SQL查詢,如果參數爲null,選擇所有
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
現在我想,如果爲NULL,所有記錄必須被選中。 我如何在SQL中實現這一點? 感謝
您也可以使用函數IFNULL
,COALESCE
,NVL
,ISNULL
檢查空值。這取決於你的RDBMS。
MySQL的:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
或
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
ORACLE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
SQL服務器/SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
如果'NAME'中有空值,這將不起作用。但是對於不可爲空的列,這是要走的路徑=)(編輯:至少不在SQL Server中) –
請注意,這會產生較慢的查詢,而不是調整SQL,使其在參數爲空時不包含where子句。 – Kram
試試這個:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
如何在PHP中使用呢? – prograshid
@prograshid - 只需在PHP中執行查詢 –
我試圖執行查詢字符串,但它在訪問結果時給出。說未定義的函數調用fetch_assoc – prograshid
這讓我討厭的T-SQL甚至更多... –