Encontrei uma instrução T-SQL que não consegue tornar uma string NULL, se for uma string vazia. É como:
SELECT NULLIF(N'ធ្វើឱ្យ', '') -- NULL
De acordo com o Google Tradutor, a palavra significa "fazer" na língua Khmer . Se eu tentar:
SELECT IIF(N'ធ្វើឱ្យ' = '', 1, 0) -- 1
Então, o mecanismo diz que esta string está vazia.
Não tenho certeza se este é um problema de idioma de suporte, pois aqui tenho:
ou algum tipo de conversão de precedência de tipo de dados, pois temos duas strings. É estranho como então o motor não consegue entender que a string não está vazia?
Depois de tudo isso SELECT LEN(N'ធ្វើឱ្យ')
me dá sete, só me pergunto qual é o motivo exato.
Presumo que
NULLIF
esteja em seuSELECT
e this seja para apresentação ou consumo final, e não em algo como theWHERE
ou anON
(se estiver, provavelmente é um Problema XY ).Conforme mencionado nos comentários, os agrupamentos latinos não "funcionam bem" com alfabetos não latinos (ou emoticons). Como resultado, a comparação entre
N'ធ្វើឱ្យ'
e''
resulta em que eles sejam tratados como iguais, embora claramente não o sejam.Se você estivesse trabalhando apenas com texto Khmer, eu teria sugerido que você alterasse o agrupamento para um agrupamento Khmer (como
Khmer_100_CI_AI
), no entanto, como você tem muitos idiomas, um agrupamento binário provavelmente seria melhor™. Então, se necessário, você podeCOLLATE
retornar o valor ao padrão do banco de dados: