こんにちは私は3つのハイプーンを持つ単一の列からすべてのレコードを見つけることを可能にするクエリを公式化しようとしています。レコードの例は、XXXX-RP-XXXAS1-Pのようになります。SQLの文字列 - ハイプンによるフィルター(x番号)
2つまたは3つのハイペーンのいずれかで1000個のレコードをソートできるようにする必要があります。
こんにちは私は3つのハイプーンを持つ単一の列からすべてのレコードを見つけることを可能にするクエリを公式化しようとしています。レコードの例は、XXXX-RP-XXXAS1-Pのようになります。SQLの文字列 - ハイプンによるフィルター(x番号)
2つまたは3つのハイペーンのいずれかで1000個のレコードをソートできるようにする必要があります。
文字列のハイフンを空の文字列で指定し、元の文字列の長さと置き換えられた文字列の長さの差を計算してハイフンの数を調べることができます。
where col like '%-%-%-%'
これは3つの以上のハイフンを取得します:あなたのレコードが2つのまたは3のハイフンを持っている場合は、単に行う
select *
from yourtable
where len(column_name)-len(replace(column_name,'-',''))=3
and substring(column_name,9,1) not like '%[0-9]%'
パーフェクトです。正確に私が必要なもの。 –
また、値が非数値の9番目の文字(ダッシュを含む)が –
の編集された答えを参照する上記のステートメントをフィルタリングする有効な方法があります。 –
。丁度3の場合: - 感謝
where col like '%-%-%-%' and col not like '%-%-%-%-%'
これを試してみてください、
declare @t table(col1 varchar(50))
insert into @t values ('A-B'),('A-B-C-D-E'),('A-B-C-D')
select * from
(SELECT *
,(len(col1) - len(replace(col1, '-', ''))
/len('-')) col2
FROM @T)t4
where col2=3
これは、SQL Server 2008の –