基本的に選択範囲から数値を削除する関数があります。この関数は、英語ベースの文字セットで効果的です。英語以外の文字(中国語、日本語、インド語など)で構成された新しいデータセットがあり、希望の効果が得られません。私はNVarchar
を使用して、英語以外の可能性のあるレコードを保存しています。以下は私が現在使っている機能です。どんな助言も本当に役に立ちます。英語以外の文字セットを使用する関数
GO
/****** Object: UserDefinedFunction [dbo].[StripVenName] Script Date: 05/03/2012 16:24:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE FUNCTION [dbo].[StripVenName] (@InString as VarChar(8000))
RETURNS NVarChar(100) AS
BEGIN
Declare @ReturnVal as NVarchar(4000)
Declare @OutString as NVarchar(4000)
Declare @Pos as smallint
Declare @CurChar as NVarChar(1)
IF LEN(@InString) = 0
SET @ReturnVal = ''
ELSE
BEGIN
Set @Pos = 1
SET @OutString = ' '
WHILE (@Pos <= Len(@InString))
BEGIN
Set @CurChar = SUBSTRING(@InString, @Pos, 1)
if ASCII(@CurChar) between 65 and 90 or ASCII(@CurChar) between 97 and 122
SET @OutString = @OutString + @CurChar
Set @Pos = @Pos + 1
END
if len(@OutString) = 0
SET @OutString = @InString
SET @ReturnVal = LTRIM(RTRIM(@OutString))
END
RETURN @ReturnVal
END
あなたの質問に(少なくとも言語に) –
と入力してください。入力パラメータがnvarcharではなくvarcharのようです。 –
Gマストロスト良いキャッチ。それは働いたようだ。私はそれを見ていないとは信じられません。それは日中遅くになっているに違いない。 –