Tôi đã tự hỏi, nếu có cách nào để thêm một tên cột vào các hàm vô hướng CLR của tôi trong Sql Server. Tôi có nghĩa là sau khi tôi chạy truy vấn của mình, tôi muốn xem một cột có kết quả của hàm này đã được đặt tên với một cái gì đó tùy chỉnh thay vì (No column name)
.sql server CLR chức năng vô hướng CLAR với tên cột mặc định
Tôi biết rằng các chức năng thường được kết hợp với nhau, hoặc tôi phải đặt tên cho chúng một cái gì đó khác vì lý do khác, nhưng vẫn - khi bạn viết truy vấn với 30 cột, không phải bấm vào bí danh cho 20 cột sẽ tốt.
Vì vậy, có ai biết một hack có thể kích hoạt tính năng này không? Cũng cần có tính năng này thông qua một số addin trong SSMS (ví dụ: xây dựng bí danh giả từ các hàm và cột được sử dụng để tính toán, chẳng hạn như "dateiff_startdate_enddate"). Tôi đã cố gắng tìm một giải pháp sẵn sàng cho điều này, nhưng không có hiệu lực. Bất kỳ gợi ý nào?
Chỉnh sửa: Một số người đã hỏi tôi về ví dụ về mã. Tôi không nghĩ rằng điều này sẽ giúp nhiều, nhưng ở đây nó là:
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlTypes;
using System.Text.RegularExpressions;
namespace ClrFunctions
{
public class RegexFunctions
{
public static SqlBoolean clrIsMatch(SqlString strInput, SqlString strPattern)
{
if (strPattern.IsNull || strInput.IsNull)
{
return SqlBoolean.False;
}
return (SqlBoolean)Regex.IsMatch(strInput.Value, strPattern.Value, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
}
}
}
T-SQL:
Create Assembly ClrFunctions From 'C:\CLR\ClrFunctions.dll'
GO
Create Function dbo.clrIsMatch(
@strInput As nvarchar(4000),
@strPattern As nvarchar(255)
)
Returns Bit
As External Name [ClrFunctions].[ClrFunctions.RegexFunctions].[clrIsMatch]
GO
Và đây là tôi mong muốn-to-be-thể tiếng gọi của chức năng này trong T-SQL và dự kiến kết quả:
select
txt, dbo.clrIsMatch(txt,'[0-9]+')
from (
select 'some 123 text' as txt union all
select 'no numbers here' union all
select 'numbers 456 again'
) x
kết quả đã có một tên cột, mà không cần phải thêm bí danh trong T-SQL:
Có lẽ một ví dụ cụ thể sẽ giúp bạn nhận được một số câu trả lời: bạn có thể hiển thị ví dụ về mã tối thiểu không? [Ví dụ] (http://msdn.microsoft.com/en-us/library/ms131103.aspx) trong MSDN gợi ý rằng các hàm CLR làm (hoặc có thể) cung cấp các tên cột trong các tập kết quả của chúng. – Pondlife
Bạn có thể thêm tên cột cho các hàm có giá trị bảng, nhưng đó không phải là ý của tôi. Tôi muốn cung cấp tên cột cho các hàm vô hướng. Nhưng cảm ơn bạn đã bình luận của bạn. –
OK, vì bạn không bao giờ sử dụng từ "vô hướng" không rõ ràng, mặc dù theo tôi biết các hàm vô hướng không bao giờ có các bí danh cột trong SQL Server. Họ không trả lại cột, sau khi tất cả. Nhưng tôi đã chỉnh sửa tiêu đề câu hỏi và thẻ của bạn để hy vọng làm cho câu hỏi rõ ràng hơn và nhận được một số phản hồi tốt hơn. – Pondlife