this'a göre, SQL Server 2K5, UCS-2'yi dahili olarak kullanır. UTF-16 verilerini UCS-2'de (uygun veri tipleri, nchar vb.) Saklayabilir, ancak ek bir karakter varsa, bu 2 UCS-2 karakteri olarak saklanır.SQL Server'da UTF-16/Unicode verilerini depolama
Bu, dize işlevleriyle ilgili sorunları ortaya çıkarır; yani, bir karakterin SQL Server tarafından 2 olarak ele alınmasıdır.
SQL Server'ın yalnızca UCS-2'yi işleyebildiği ve daha da fazlası için SQL 2K8'de çözülmediği konusunda biraz şaşırdım. Bu karakterlerin bazılarının hepsinin ortak olamayacağını takdir ediyorum.
Makalede önerilen işlevlerin yanı sıra, (kırık) dize işlevleri ve SQL Server 2K5'teki UTF-16 verileriyle ilgili en iyi yaklaşımla ilgili öneriler.
benimsemeye mı? – gbn
LEN, UTF-16 karakterlerinin sayısını değil, dizideki UCS-2 karakterlerinin sayısını döndürecektir. SUBSTRING, UTF-16 karakterlerini yarıya böler. Aynı, SOL ve SAĞ için de geçerli. ÜST ve ALT aynı zamanda muhtemelen kırılacaktır. REVERSE kesinlikle kırılacaktı. CHARINDEX ve PATINDEX de. FARK VE STUFF hakkında emin değilim. Yani bir sürü .... –
Bunu işaretlediğiniz için teşekkürler. TÜM Unicode karakterlerini desteklememesi, bazı UTF-16 dize değerlerinin (ör. Windows veya .NET'ten) doğrulama olmadan SQL Server'a dökülmek için geçerli olmadığı anlamına gelir. Herhangi bir uygulamanın hatasız ve teknik olarak doğru olması için (RARE hataya neden olan karakterler, doğrulukta ne kadar fark yaratmazlar), TÜM dizeler, UCS-2 uyumlu karakterleri içerecek şekilde doğrulanmalıdır. SQL Server'da saklanmak. Olağanüstü! İşimi daha da zorlaştıracak Microsoft yolu. – Triynko