0

関数の出力を、選択したい列名として「キャスト」する必要があるシナリオに遭遇しました。

(SELECT
LOWER(DATE_FORMAT(NOW(), '%b'))
FROM lang_months
WHERE langRef = lang_statements.langRef
) AS month

期待される現在の月を返すだけですが、この場合は「5月」という列を選択したいと思います。

どうすればいいですか?


ありがとう、あなたの答えは私にアイデアを与えました。現在の日付を変数に入れて、次のようにクエリで使用しました。

$thisMonth = strtolower(date('M')) ;

(SELECT
$thisMonth
FROM lang_months
WHERE langRef = lang_statements.langRef
) AS month
4

3 に答える 3

1

これは不可能です。クエリがMySQLに到達するとき、エンティティの名前を知っている必要があります。

最も簡単なオプションは、使用している言語で列名を決定し、それを使用することです。たとえば、PHPの場合:

$col = 'someAlias';
$query = "SELECT blah as `{$col}` FROM tbl";
于 2012-05-16T07:19:17.433 に答える
0

これはうまくいくはずです:

$month = LOWER(DATE_FORMAT(NOW(), '%b'));       // Results in 'may'
$result = mysql_query('SELECT * FROM $month');  // Returns all records in table 'may'
于 2012-05-16T07:42:53.480 に答える
0

これは不可能だと思います。

データに対してこのビューを提供するビューを作成して、より表現力豊かにクエリを実行できるようにすることもできますが、それでも 12 個のサブクエリとエイリアスを手動で作成する必要があります。

于 2012-05-16T07:17:49.843 に答える