40 を超える列がすべて varchar に格納されているテーブルがあります。一部の列には、数値または日付のデータも含まれています。
列名とデータ型を引数として取り、列のデータを検証しようとするユーザー定義関数があります。
検証が失敗した場合は、「ColumnName が数値ではないか、欠落しています」というメッセージが返されます。ただし、「値が数値ではないか、欠落しています」が返されます。
関数のコードは次のとおりです。
create function [dbo].[fn_Polaris_Validate_Staging_Data](@ColumnName varchar(max), @TargetValidation varchar(max))
returns varchar(max)
AS
Begin
Declare @Remark varchar(max);
if(@TargetValidation = 'Standard' and @ColumnName is null)
BEGIN
select @Remark = @ColumnName + ' is not provided.'
return @Remark
END
if(@TargetValidation = 'NumericType' and ISNUMERIC(@ColumnName) = 0)
BEGIN
select @Remark = @ColumnName + ' is not numeric or not provided.'
return @Remark
END
if(@TargetValidation = 'DateType' and ISDATE(@ColumnName) = 0)
BEGIN
select @Remark = @ColumnName + ' is not proper date or not provided.'
return @Remark
END
return isnull(@Remark, '')
END
この発言を保存するテーブルに「発言」という列があります。これは、更新クエリでこの関数を使用する方法です。
UPDATE TABLE TABLE1
SET remarks = isnull(remarks,'') +
function(Interest, 'NumericType') +
function(Asset, 'Standard') +
function(Date, 'DateType')
どんな助けでも大歓迎です。ありがとうございました。