3

列 event_id と horse_id が「1」で終わるテーブルのすべての詳細をリストする必要があります。私は次のことを行うことでこれを達成しました:

SELECT * FROM event 
WHERE event_id AND show_id LIKE '%1'

ただし、質問は文字列関数の使用を指定しています。この場合に役立つ唯一の文字列は、RIGHT() です。私はこれを私が望むように実行することはできません。

SELECT * FROM event
WHERE RIGHT('1',1) 

1 で終わるすべての列を表示します。ただし、検索を event_id と horse_id に限定する必要があります。

SELECT * FROM event
WHERE event_id AND show_id RIGHT('1',1) 

うまくいきません。「右」の文字列が無効です。

どんな助けでも感謝します。

4

4 に答える 4

5

あなたはほとんどそこにいるので、私は答えることに何の不安もありません. 答えを求めて手を挙げただけなら、私はもっと口を閉ざしますが、作業の大部分 (right()関数の検索) は完了したので、ここで説明します。

まず、WHERE event_id AND show_id LIKE '%1'ほぼ間違いなく、あなたが思っていることをしません。複雑な式の各コンポーネントは独立している必要があるため、次のようになります。

WHERE event_id LIKE '%1' AND show_id LIKE '%1'

ただし、それはまだ文字列関数を使用していません。彼らが得ているのは、次のような文字列関数を列に適用して比較する必要があるということです。

... where right(event_id, 1) = '1' ...

関数は列right(event_id, 1)の右端の文字を返し、event_idそれをリテラルと比較するだけです'1'horse_id同様に(show_idあなたの例でやっているようにではなく)それを行うと、必要なものが得られます。

今すぐ読むのをやめて、まずそれを試してみてください!


そして、上記の内容を読んでもまだ理解できない場合は、ここから試してみてください。最初に上記の情報を使用して実行しようとせずに、これを使用しないでください。

... where right(event_id, 1) = '1' and right(horse_id, 1) = '1'
于 2012-07-24T06:03:46.160 に答える
3

MySQL 助けて!

RIGHT(str, n)str から右端の n 文字を返します。これは、この戻り値に対してテストする必要があることを意味します。

SELECT * FROM event WHERE RIGHT(event_id, 1) = '1' AND RIGHT(horse_id, 1) = '1';
于 2012-07-24T06:05:02.360 に答える
1

使用してみてください:

and substring(horse_id, -1) = '1'
于 2012-07-24T06:07:30.940 に答える
1

試す:

SELECT * FROM event
WHERE RIGHT(event_id, 1) = '1' AND 
      RIGHT(horse_id, 1) = '1';
于 2012-07-24T06:04:51.330 に答える