0
我有以下形式的一些過濾器:如何處理與SQL Server多個通配符
對象A
+/- Start End
----------------------------------------------
+ 000000080000 000000090000
- 000000800500
+ 054*
對象B
+/- Start End
----------------------------------------------
+ 000000090000 000000100000
+ 00??00900500
- 000000900500
+ 055*
這意味着:
號除000000800500之外的000000080000和000000090000之間,以054開頭的數字與對象A相關聯。 000000090000和000000100000之間
號碼除了000000900500,數字匹配00 ?? 00900500(當然除了000000900500),並開始055號碼與對象B.
實施例的表結構的相關聯:
CREATE TABLE dbo.Filter
(
IDFilter int IDENTITY PRIMARY KEY
)
CREATE TABLE dbo.FilterRow
(
IDFilterRow int IDENTITY PRIMARY KEY
,IDFilter int FOREIGN KEY REFERENCES dbo.Filter(IDFilter) NOT NULL
,Operator bit --0 = -, 1 = + NOT NULL
,StartNumber varchar(50) NOT NULL
,EndNumber varchar(50)
)
CREATE TABLE dbo.[Object]
(
IDObject int IDENTITY PRIMARY KEY
,Name varchar(10) NOT NULL
,IDFilter int FOREIGN KEY REFERENCES dbo.Filter(IDFilter) NOT NULL
)
我需要一種方法來確保沒有數字可以與SQL(或CLR)中的多個對象相關聯,並且我真的不知道如何做這樣的事情(除了bruteforce)。
我有一個CLR函數Utils.fIsInFilter( '?8 *', '181235467895'),支持通配符和將返回1,如果它可以幫助...
是的,我可以使用CLR函數或LIKE,我仍然不知道如何去做。 例如,我如何知道12345678912-1900000000範圍是否可能與通配符「1 * 98 * 9 ??」重疊? (編號122982123959,例如重疊) – Kevin 2009-07-17 19:16:41