簡體   English   中英

SELECT語句的WHERE子句中的列名是否通配符?

[英]Wildcard for a column name in the WHERE clause of a SELECT statement?

在WHERE子句中指定的列名中是否可以有通配符? 我想選擇一些東西,但前提是一堆列匹配某個值(在這種情況下為1)。 例如:

SELECT COUNT(id) FROM records WHERE *_check = 1

我有一堆帶有_check作為后綴的列,使用類似於上面的代碼的東西(這不起作用)會很好。

您可以查詢information_schema以在一次查詢中獲取列

SELECT column_name FROM information_schema.columns
WHERE table_schema = 'foo'
 AND table_name = 'bar'
 AND column_name LIKE '%_check'

並根據結果構建查詢(偽代碼)

query = "SELECT COUNT(id) FROM records WHERE ";

foreach columName in columnNames
   query = query + " " + column_name + " = 1 OR "
next

query = TrimLastOr(query);

但是我不建議這樣做,因為mysql information_schema查詢的性能很差,因為它們從磁盤讀取每個查詢的內容。

更好:使用返回的視圖

SELECT id FROM records WHERE col1_check=1 or col2_check=2 ...

因此,您可以在多個位置的邏輯中使用它,並且僅在添加另一個_check列時才需要更新視圖。

沒有。

如果要執行這樣的操作,則需要等效的動態SQL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM