我有这个功能,可以从字符串中检索第一个单词:
CREATE FUNCTION dbo.FIRST_WORD(@value nvarchar(1000))
RETURNS nvarchar(1000)
AS
BEGIN
RETURN CASE CHARINDEX(' ', @value, 1)
WHEN 0
THEN @value
ELSE SUBSTRING(@value, 1, CHARINDEX(' ', @value, 1) - 1) END
END
GO
问题是我表中的数据为non-ASCII
格式,因此当我向该函数传递一些值时,会出现问号而不是结果:
SELECT dbo.FIRST_WORD('ничего не поделаешь')
返回:??????
但是,如果我通过ASCII
个字符,例如:
SELECT dbo.FIRST_WORD('hello world')
它返回:hello
符合预期。
我尝试在参数前添加N
,但没有帮助:
SELECT dbo.FIRST_WORD(N'ничего не поделаешь')
仍返回:??????
答案 0 :(得分:3)
有一些问题
这是您需要的:
Create FUNCTION dbo.FIRST_WORD (@value nvarchar(max))
RETURNS nvarchar(1000)
AS
BEGIN
Return (Select CASE CHARINDEX(' ', @value, 1)
WHEN 0
THEN @value
ELSE SUBSTRING(@value, 1, CHARINDEX(' ', @value, 1) - 1) END)
END
GO
Select dbo.FIRST_WORD(N'ничего не поделаешь')
答案 1 :(得分:0)