次のようなことができます。
SELECT * FROM PART_TABLE
WHERE REPLACE(REPLACE(PARTNO,'/', ''),'-','') LIKE '%D12A%'
これは、指定した2文字で機能し、次のようにさらに文字を拡張できます。
SELECT * FROM PART_TABLE
WHERE REPLACE(REPLACE(REPLACE(PARTNO,'/', ''),'-',''),*,'') LIKE '%D12A%'
特殊文字が制限されていない限り、おそらく最もエレガントなソリューションではありません。それ以外の場合は、英数字以外の文字を削除する関数を作成することをお勧めします。
このような関数の例を次に示します。
CREATE FUNCTION dbo.udf_AlphaNumericChars
(
@String VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @RemovingCharIndex INT
SET @RemovingCharIndex = PATINDEX('%[^0-9A-Za-z]%',@String)
WHILE @RemovingCharIndex > 0
BEGIN
SET @String = STUFF(@String,@RemovingCharIndex,1,'')
@RemovingCharIndex = PATINDEX('%[^0-9A-Za-z]%',@String)
END
RETURN @String
END
------- Query Sample (untested)---------
SELECT *
FROM PART_TABLE
WHERE DBO.udf_AlphaNumericChars(PARTNO) LIKE '%D12A%'
出典: http://sqlserver20.blogspot.co.uk/2012/06/find-alphanumeric-characters-only-from.html