2

私はこのSQLステートメントを持っています:

SELECT * from tBooks where BookNbr = '20111122-001'

BookNbrはとして定義されvarchar (15)、レコードはテーブルに存在します。

ダッシュと関係があるのではないかと思いますが、理由はわかりません...

4

2 に答える 2

3

したがって、これはおそらくハイフンとenダッシュとemダッシュの問題です。(これは、表示された一致フィールドをASCIIエディターに貼り付けて、マルチバイト文字が表示されるかどうかを確認することで確認できます。)

SELECT * from tBooks where BookNbr like '20111122%001'

そのため%、途中の特定の句読点は無視されます。

于 2012-05-10T19:39:03.613 に答える
0

@wallykによって提供される解決策に加えて、問題は破損したインデックスエントリによっても引き起こされる可能性があります。を使用してインデックスをバイパスすることでこれを確認できます

SELECT * from tBooks where BookNbr||'' = '20111122-001'

これでレコードが返される場合は、データベースをバックアップおよび復元してインデックスを再構築する(またはインデックスを削除して再作成する)のが賢明です。

于 2012-05-12T07:39:12.440 に答える