Muk*_*rov 2 sql sql-server utf-8
我有一个从字符串中检索第一个单词的函数:
\n\nCREATE FUNCTION dbo.FIRST_WORD(@value nvarchar(1000))\nRETURNS nvarchar(1000)\nAS\nBEGIN\nRETURN CASE CHARINDEX(' ', @value, 1)\n WHEN 0\n THEN @value\n ELSE SUBSTRING(@value, 1, CHARINDEX(' ', @value, 1) - 1) END\n END\nGO \nRun Code Online (Sandbox Code Playgroud)\n\n问题是我的表中的数据是格式化的non-ASCII,所以当我将一些值传递给该函数时,我得到问号而不是结果:
SELECT dbo.FIRST_WORD('\xd0\xbd\xd0\xb8\xd1\x87\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb5\xd1\x88\xd1\x8c')
返回:??????
但是如果我传递ASCII字符,例如:
SELECT dbo.FIRST_WORD('hello world')
它返回:hello正如预期的那样。
我尝试在参数之前添加N,但没有帮助:
SELECT dbo.FIRST_WORD(N'\xd0\xbd\xd0\xb8\xd1\x87\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb5\xd1\x88\xd1\x8c')
仍然返回:??????
有一些问题
\n\n这是你需要的:
\n\nCreate FUNCTION dbo.FIRST_WORD (@value nvarchar(max))\n RETURNS nvarchar(1000)\nAS\nBEGIN\n\n Return (Select CASE CHARINDEX(' ', @value, 1)\n WHEN 0\n THEN @value\n ELSE SUBSTRING(@value, 1, CHARINDEX(' ', @value, 1) - 1) END)\n\n END\nGO \n\nSelect dbo.FIRST_WORD(N'\xd0\xbd\xd0\xb8\xd1\x87\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb5\xd1\x88\xd1\x8c')\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1756 次 |
| 最近记录: |