问题:我的公司正在使用Liferay 6.0,它正在升级到Liferay 6.1 GA2。在6.0中,我们在SQL服务器数据库列中有大量具有智能引号字符的行。在自动升级中,智能报价正在被'?'取代。我们计划在升级之前运行查找并替换内容上的SQL语句以防止此问题。我编写了一个小型Java程序来查找字符的ASCII值。该字符在ANSI(“A”)中的显示方式与UTF-8(“A A”)中的显示方式不同。我在前面的句子中夹住了大写字母A之间的明智引用字符。删除SQL服务器文本列中的智能引号
public class CheckAscii {
public static void main(String args[]) {
asciiVals("A‎A"); //ANSI
asciiVals("AA"); //UTF-8
}
static void asciiVals(String str) {
System.out.println("Length of the string: " + str + " is " + str.length());
for (int j=0; j<str.length(); j++){
System.out.println("Ascii value of char " + str.charAt(j) + " : " + (int)str.charAt(j));
}
System.out.println("");
}
}
输出被字符串的
长度:AA€ZA是char A的5
ASCII值:字符€226
ASCII值:字符A的65
ASCII值:炭的Z 8364
ASCII值:字符A的381
ASCII值:字符串的65
长度:A A是3 012焦炭A的 ASCII值:焦炭的65
ASCII值:8206字符A的
ASCII值:65
下面的查询,并没有给我任何行,
SELECT [COLUMN] FROM [TABLE] where [COLUMN] like '%['+char(226)+']%'
SELECT [COLUMN] FROM [TABLE] where [COLUMN] like '%['+char(8364)+']%'
SELECT [COLUMN] FROM [TABLE] where [COLUMN] like '%['+char(381)+']%'
SELECT [COLUMN] FROM [TABLE] where [COLUMN] like '%['+char(8206)+']%'
这个查询提取,
select CHAR(226), CHAR(8364), CHAR(381), CHAR(8206)
â null null null
我不怎么找那些cha文本中的部分。有谁知道如何在SQL Server中为智能报价组成搜索查询吗?