2016-11-21 11 views
1

上の機能は、Microsoft Accessデータベースでは例えば、この表のように:アクセスSQL:私が持っている番号フィールド

id      numeric 
context     text 
numberfield    numeric 

私はコラム「numberfield」で9で終わるすべてのレコードを選択します。それは数値フィールドで、結果として、私は、次のSQLを使用することはできませんので、これは問題を与える:

select * from table where numberfield like "%9" 

解決策は、私がテキストにnumberfieldを変更することです。しかし、これはいくつかのユーザーがおり、その変更によって将来問題が生じる可能性があるため、問題があります。数字フィールドのときにエンディングを選択するオプションはありますか?

+0

あなたはそのSQLを使用することはできませんか?ほとんどのデータベースで可能です。いずれにせよ、数字を文字列に変換するだけです。 –

+0

Yhea私もそれは可能だと思った。私は通常postgresを使用します。しかし、私は文字列に番号を変更することはできません。これは、複数のユーザーがいて、列でテキストを入力してデータベースを破損する可能性があるためです(番号はありません(常にその人がいます)) –

答えて

2

少し怪しいですね。あなたはそのクエリを使用できますか? Accessについてはわかりませんが、他のほとんどのDBMSでも可能です。それは実際に動作しない場合

、あなたはこれを行うことができます。

select * from table where STR(numberfield) like "*9" 

EDIT:

select * from table where numberfield like "*9" 
:Accessで*で使用され%を使用しているため
はたぶんそれは動作しませんでした
+0

私はあなたのソリューションを試しました。私はゼロ選択を得る。 –

+0

@ B.Termeer編集を参照してください。 – sagi

+0

が問題でした。ありがとう –

1

数字は数字なので、このためにModを使用してください。

select * from table where numberfield mod 10 = 9 
+0

どのように誰がこれをdownvoteすることができます私の外です。人々はもう学校で数学に出席しないのですか? – Gustav

0

文字列にキャストして比較するのではなく、右端の桁をMOD操作で抽出するだけです。
編集クエリは次のように:

SELECT * 
FROM table 
WHERE ((([numberfield] Mod 10)=9)); 
関連する問題