データベースに5XXXXXX
のような値を保存しました。X
は任意の数字です。つまり、5349878
のような着信SQLクエリ文字列を照合する必要があります。
誰もそれを行う方法を知っていますか?
たとえばXXXX7XX
のようなさまざまなケースがあるので、一般的なものにする必要があります。 SQL Server内で別の方法でパターンを表すことは気にしません。
.NETでC#を使用しています。
dBに保存される値は5XXXXXX [xは任意の数字です]
データ型については言及しません-数値の場合、CAST/CONVERTを使用してデータ型を[n] varcharに変更する必要があります。
つかいます:
WHERE CHARINDEX(column, '5') = 1
AND CHARINDEX(column, '.') = 0 --to stop decimals if needed
AND ISNUMERIC(column) = 1
参照:
たとえば、XXXX7XXなどのさまざまなケースもあるため、一般的なものにする必要があります。
つかいます:
WHERE PATINDEX('%7%', column) = 5
AND CHARINDEX(column, '.') = 0 --to stop decimals if needed
AND ISNUMERIC(column) = 1
参照:
SQL Server 2000+は正規表現をサポートしていますが、キャッチできるのは、能力を得る前にCLRでUDF関数を作成する必要があることです。 Googleで検索した場合、サンプルコードを提供する記事が多数あります。それを設定したら、次を使用できます。
5\d{6}
最初の例\d{4}7\d{2}
2番目の例正規表現の詳細については、 このWebサイト を強くお勧めします。
SQL Serverで次のようなクエリを作成できます。
--each [0-9] matches a single digit, this would match 5xx
SELECT * FROM YourTable WHERE SomeField LIKE '5[0-9][0-9]'
これを試して
select * from mytable
where p1 not like '%[^0-9]%' and substring(p1,1,1)='5'
もちろん、サブストリング値を調整する必要がありますが、残りは機能するはずです...
数字を照合するには、[0-9]を使用できます。したがって、5 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]および[0-9] [0-9] [0-9 ] [0-9] 7 [0-9] [0-9] [0-9]。郵便番号についてはこれを何度も行います。
この目的にはSQLワイルドカードで十分です。このリンクに従ってください: http://www.w3schools.com/SQL/sql_wildcards.asp
次のようなクエリを使用する必要があります。
select * from mytable where msisdn like '%7%'
または
select * from mytable where msisdn like '56655%'