このクエリを使用して、特定のデータを取得しています。 "select * from emp where emp_name LIKE's% '";
emp_namは文字フィールドですが、数値フィールドで同じ論理条件を使用するにはどうすればよいですか?何かのようなもの:
"select * from emp where emp_id ????
ここで、emp_idは数値フィールドです。
ありがとう、
Accessでは、数値フィールドを空の文字列と連結して、LIKEを使用して比較できる文字列に強制変換できます。
select * from emp where emp_id & '' like '123*'
また、Accessはワイルドカード文字として%ではなく*を使用することに注意してください。参照: 演算子(Microsoft Access SQL)のように 。
数値に対してワイルドカードを使用することはできませんが、本当に必要な場合は、数値をvarcharに変換してから、ワイルドカードの照合を実行できます。
例えば。
SELECT * FROM emp WHERE CONVERT(varchar(20), emp_id) LIKE '1%'
AccessデータベースエンジンのSQL構文で、%
ワイルドカード文字を使用するには、ANSI-92クエリモードを使用する必要がありますOR ALIKE
キーワードの代わりにLIKE
キーワード。
ANSI-92クエリモードの詳細については、Access2003ヘルプの ANSI SQLクエリモード(MDB)について を参照してください(同じことがAccess2007のACEにも当てはまりますが、何らかの理由でAccess2007ヘルプからトピックが削除されました) 。コードでこれを行う場合は、OLE DBを使用する必要があります。例:ADO VBAのクラシック。
ALIKE
キーワードの場合...あまり見つかりません。これは、公式に文書化されていない機能の1つです。つまり、Accessデータベースエンジンの将来のリビジョンから削除される可能性があるというリスクの要素があります。個人的には、検証ルールとCHECK
制約に必要なANSI-89クエリモードとANSI-92クエリモードの両方を明示的にコーディングする必要があるというリスクを冒します(以下の例を参照)。両方のコーディングを行うことはできますが、正しく行うには時間がかかり、注意が必要です。つまり、間違えるとすぐにリスクが高まります。
それが答えです。さて、「解決策」について...
明らかに、emp_idに対してその種のクエリを実行する必要がある場合、ドメインは間違っています。つまり、数値フィールドであってはなりません。
病気を治す:スキーマを変更してこれをテキストフィールドにし、ドメインルールを追加して、数字のみが含まれるようにします。
CHECK (emp_id NOT LIKE '%[^0-9]%')
EDIT'Jet 'タグが追加されました。 Accessデータベースエンジンには独自の構文があるため、上記のCHECK
制約を書き直す必要があります。^
文字を!
に置き換えます。また、これをANSI-89クエリモードとANSI-92クエリモードの両方と互換性を持たせるには、ALIKEキーワードを使用します。
CHECK (emp_id NOT ALIKE '%[!0-9]%')
いいえ、数値フィールドにLIKE
を使用することはできません。 <
、>
または=
、>=
、<=
;)を使用してみてください
数値フィールドで「12から始まる」やこのようなものを検索したい場合、デザインはニーズに合いません。
'%'ワイルドカードはMS-SQLサーバーで機能しました。 http://technet.Microsoft.com/en-us/library/aa933232%28v=sql.80%29.aspx を参照してください。
クエリselect * from MyTable where ID like '548%'
MS-SQL Server 2008 R2で動作し、ID5481,5485などの結果を返します。ID列はint
タイプです。
emp_id
フィールドでcast
またはconvert
関数を使用すると、like
と比較できます。
cONCATimplicを使用して整数を文字列に変換します
SELECT * FROM city WHERE CONCAT(id_city、 '')LIKE '%119%'
こんにちは私はフロートでこれを行うのに問題がありました私は '%903%'のような2つのtims cast(cast(EmpId as bigint)as varchar(15))をキャストしなければなりませんでした
FileMaker SQLでは、STRVAL関数を使用して任意のフィールドを文字列にキャストできます。
SELECT * FROM emp WHERE STRVAL(emp_id) LIKE '1%'
これは、FileMakerでのこれの使用の実際の例です。
SELECT emp_id FROM emp WHERE STRVAL(someNumericField) LIKE '%'+CHR(0)+'%'