2017-08-18 5 views
2

SQL Serverデータベースで問題が発生していますが、誠実に記述する方法がわかりません。したがって、私はできる限り、それを実証しようとします。部分文字列を検索するときにLIKE演算子が動作しますが、全体文字列ではありません

私は[Meter Name]列の値が

Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot 

ある複数の行を含むテーブルを持って、私は次のクエリを実行したとき、私は私が期待する正確な結果を得ます。

select distinct [Meter Name] 
from Last_PM_Export 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service%' 

「ワイルドカード」を使用しています。「サービス」という単語の直後に検索パターンを切り捨てています。私は次の結果を得る。

Expected result using partial string

繰り返しますが、これは私が期待する正確に何です。問題ない。

ここで、「サービス」という単語の直後にスペースが含まれるようにパターンを拡張するとどうなるかを観察します。

select distinct [Meter Name] 
from Last_PM_Export 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service %' 

Unexpected result using partial string

あなたが見ることができるように、クエリは結果を返しません。私はまた、テーブルから直接コピーされた文字列全体を照会しようとしました。

select distinct [Meter Name] 
from Last_PM_Export 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot' 

結果はすぐ上のクエリと同じです。結果がありません。

これは何らかの理由で発生するはずがないと思います。それは、私が作業するLIKEオペレータをどのように理解しているかに直面して飛びます。私は社内のIT担当者と相談したが、これは珍しいことに同意する。

また、これは問題の非常に良い説明ではありませんが、デモで十分です。また、テーブルやデータベースをより完全に共有することができないという謝罪もありますが、機密保持のためにはできません。

ご協力いただければ幸いです。ありがとうございました。

+8

"service"の後の空白は空白ではないかもしれません。 –

+1

スペースと2つが何であるかを調べるためにヘキサエディタを取得します。 3つすべてが制御文字である可能性があります。データオペレータがアドレスをコピーしてデータベースに貼り付けると、私は仕事で多くのことが起こります。 – abraxascarab

+0

あなたはページ上のデータを見て、実際にアフターサービスであることを確認できます – dbajtr

答えて

0

コメントはありませんが...あなたの問題の正確なシナリオを確認してください。あなたが簡単にチェックアウトすることができますように、両方のSELECT Sは右の行で戻ってきて...

DECLARE @mockup TABLE([Meter Name] VARCHAR(1000)); 
INSERT INTO @mockup VALUES('Electric Meter #140002054 Acct.2013147 House, south mall service &&parking lot') 
         ,('Electric Meter #140002054 Acct.2013147 House, south mall service &&some other') 
         ,('different'); 

空白

SELECT * FROM @mockup 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service%'; 

--without空白

SELECT * FROM @mockup 
where [Meter Name] like 'Electric Meter #140002054 Acct.2013147 House, south mall service %'; 

--withマイトもっと何かありますか?簡潔にするために減らしましたか?上記のモックアップを変更して問題を再現できるようにしていますか?

+0

これは参考にされ、問題の原因についてのいくつかの洞察を提供しました。クエリ結果から単純に値をコピーすると、モックアップテーブルを使用して問題を再現することができませんでした。しかし、私はテーブルに入ったデータのソース、CSVファイルを調べました。ソースセルにはキャリッジリターンが含まれていることが判明しました。私は、データがインポートされたときに、復帰もそうだったと思う。ただし、データベース内には表示されません。 CSVセルからモックアップに貼り付けると、問題を再現することができました。ご協力いただきありがとうございます。 –

+0

@ J.P.Brownあなたを助けてうれしい! * grid-view *は改行を省略します。 *あなたはテキストに出力することを誓うかもしれません* ...そしてはい:このような問題はあなた自身の心を疑うことができます: - D – Shnugo

関連する問題