2012-09-24 69 views
2

我正在使用SQL Server 2008 R2。我有一個表EQUIPMENT,列MACADDRESS,其類型爲nvarchar(50)SQL Server 2008 R2:驗證文本列中的MAC地址

我需要構建一個只包含有效的mac地址的報告。該字段有時包含過去需要的「假」mac地址。

所有虛假的mac地址都包含無效的mac地址字符。有效字符是數字0-9,字母a-f或A-F。所有有效的mac地址都是12個字符。我不想嘗試使用正則表達式來解決一個簡單的問題。

我知道必須有一種方法來處理「LIKE」。

回答

1

我的英語老師帶我誤入歧途。雙重底片是有用的!

SELECT * FROM EQUIPMENT 
    WHERE LTRIM(RTRIM(EQUIPMENT.MACADDRESS)) NOT LIKE '%[^0-9a-fA-F]%' 
    AND LEN(LTRIM(RTRIM(EQUIPMENT.MACADDRESS)))=12