2010-04-06 28 views
5

Tôi có một chức năng CLR rất đơn giản để thực hiện điều Regex khớpCó thể tạo Toán tử T-SQL mới bằng cách sử dụng Mã CLR trong SQL Server không?

public static SqlBoolean RegExMatch(SqlString input, SqlString pattern) 
{ 
    if (input.IsNull || pattern.IsNull) 
     return SqlBoolean.False; 

    return Regex.IsMatch(input.Value, pattern.Value, RegexOptions.IgnoreCase); 
} 

Nó cho phép tôi viết một câu lệnh SQL Giống như.

SELECT * FROM dbo.table1 WHERE dbo.RegexMatch(column1, '[0-9][A-Z]') = 1 
-- match entries in col1 like 1A, 2B etc... 

Tôi chỉ nghĩ nó sẽ được tốt đẹp để tái cấu trúc truy vấn đó để nó có thể được gọi như

SELECT * FROM dbo.table1 WHERE column1 REGEXLIKE '[0-9][A-Z]' 

Có thể tạo toán tử so sánh mới sử dụng CLR Mã. (Tôi đoán từ cái nhìn ngắn gọn của tôi trên web rằng câu trả lời là NO, nhưng không gây hại)

Trả lời

6

Không, bạn không thể. Bạn có thể tạo các hàm, các thủ tục được lưu trữ, các trình kích hoạt và vv - nhưng không có điều khoản nào để tạo các toán tử hoặc các lệnh T-SQL mới. Không phải trong SQL Server 2008R2 hoặc, theo như tôi có thể nói.

+0

cổ vũ marc, tìm càng nhiều. Cảm ơn. –

Các vấn đề liên quan