基本的に選択範囲から数値を取り除く関数があります。この関数は、英語ベースの文字セットでうまく機能します。英語以外の文字 (中国語、日本語、インド語など) で構成される新しいデータ セットがありますが、目的の効果が得られません。このセットを使用して、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