9

where句で使用される引数を取る関数があります

function(string x)->これで、SQLクエリが作成されます。

select colname from tablename where columnname=x;

今、私はこの関数がすべての行、すなわちクエリと同等のものを与えることを望みます

select colname from tablename;

x="All"を渡すと。

「All」を渡すとすべての行が返され、それ以外の場合は結果をフィルタリングする汎用クエリを作成したいと思います。

4

9 に答える 9

14

where条件を除外するだけです。

本当に必要な場合は、その複雑な使用法

where columnname LIKE '%'

nullのみをフィルタリングします。

于 2012-07-27T06:22:18.363 に答える
7
select colname from tablename 
where columnname=(case when @x ="All" then columnname
                  else  @x end)
于 2012-07-27T06:27:29.907 に答える
4

これを試して

select colname from tablename where 1=1

上記がうまくいくことを願っています

于 2012-07-27T06:32:06.980 に答える
2

where 1 = 1が機能しましたが、where句が使用されていましたが、すべてのレコードが選択されました。

また、試すことができます

[any_column_name] = [column_name_in_LHL]

(LHL =左側。)

詳細については私の答えを参照してください

于 2020-01-05T15:53:00.300 に答える
1

私はしばらく前に同じ問題を抱えていました、そしてこの解決策は私のために働きました

select colname from tablename where columnname=x or x = 'ALL'
于 2016-11-29T19:51:27.357 に答える
1
SELECT * FROM table_name WHERE 1;
SELECT * FROM table_name WHERE 2;
SELECT * FROM table_name WHERE 1 = 1;
SELECT * FROM table_name WHERE true;

上記のクエリはいずれも、テーブルからすべてのレコードを返します。パラメータとして条件を渡さなければならなかったNode.jsでは、このように使用しました。

const queryoptions = req.query.id!=null?{id : req.query.id } : true;
let query = 'SELECT * FROM table_name WHERE ?';
db.query(query,queryoptions,(err,result)=>{
res.send(result);
}
于 2019-02-06T10:13:15.457 に答える
0

'ALL'をパラメーター値として関数に渡すことを許可する必要がある場合は、それに応じてSELECTステートメントを作成するために、関数に操作コードを配置する必要があります。つまり、パラメータに「ALL」が含まれているかどうかを検出し、SQLステートメントからWHERE句を省略できます。'ALL'以外の値が発生した場合は、パラメーターの関連するフィルター値とともにWHERE句を含めることができます。

これを行うためのコードの例は次のとおりです。

IF x = 'ALL'
THEN
   SELECT COLNAME FROM TABLENAME;
ELSE
   SELECT COLNAME FROM TABLENAME WHERE COLUMNNAME = X;
END IF;
于 2012-07-27T06:23:08.617 に答える
0

関数に使用している言語は不明ですが、SQLに到達する前に「すべて」を何らかの方法で解析する必要があります。

public void query(String param) {
  String value = "":
  switch (param) {
    case 'All':
      value = "*";
      break;
    default:
      value = param;
  }
  String sql = "select colname from tablename where colname="+value;
  //make the query
}
于 2012-07-27T06:24:21.013 に答える
0

コードに条件付きチェックを入れて(Javaを想定)、次のWHERE場合にのみ句を追加しますx != 'All'

mySqlQuery = "SELECT colname FROM tablename" + 
                (x.equals("All") ? "" : "WHERE columnname = "+x);
于 2012-07-27T06:29:01.567 に答える