gpt4 book ai didi

sql-server - TSQL - 找不到带有 CHARINDEX 的 unicode 字符

转载 作者:行者123 更新时间:2023-12-04 17:01:01 26 4
gpt4 key购买 nike

我在 TSQL 的字符串中找不到特殊的 Unicode 字符 - CHARINDEX

declare @n nchar(1), @str nchar(20)
set @n = nchar(8237)
select 'x'+@n+'x'
set @str = N'43‭0'+@n+N'22‬' -- after "3" there is also an unicode 8237 char
select charindex( @n ,@str)
select patindex( '%‭%' ,@str) -- between %% there is an unicode 8237 char

你有什么主意吗?
提前致谢..

最佳答案

U+202D LEFT-TO-RIGHT OVERRIDE是大多数排序规则比较将忽略的方向字符。要解决此问题,请显式使用二进制排序规则:

SELECT CHARINDEX(@n, @str COLLATE Latin1_General_BIN2)

PATINDEX 类似,如果您小心使用 Unicode 常量(但无论如何我都会拼出 NCHAR,因为不可见的字符会令人困惑):
select patindex( N'%‭%'  ,@str COLLATE Latin1_General_BIN2)

关于sql-server - TSQL - 找不到带有 CHARINDEX 的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com