Sql server 从SQL server文本列中删除智能引号

Sql server 从SQL server文本列中删除智能引号,sql-server,smart-quotes,Sql Server,Smart Quotes,问题:我的公司正在使用Liferay 6.0,它正在升级为Liferay 6.1 GA2。在6.0中,SQL server数据库列中有大量具有智能引号字符的行。在自动升级中,智能报价被替换为“?”。我们计划在升级之前对内容运行find-and-replace-SQL语句以防止此问题。我编写了一个小型Java程序来查找字符的ASCII值。该字符在ANSI(“A”)中的显示方式与UTF-8(“A”)中的显示方式不同‎A”)。在前一句中,我将智能引号字符夹在大写字母A之间 public class C

问题:我的公司正在使用Liferay 6.0,它正在升级为Liferay 6.1 GA2。在6.0中,SQL server数据库列中有大量具有智能引号字符的行。在自动升级中,智能报价被替换为“?”。我们计划在升级之前对内容运行find-and-replace-SQL语句以防止此问题。我编写了一个小型Java程序来查找字符的ASCII值。该字符在ANSI(“A”)中的显示方式与UTF-8(“A”)中的显示方式不同‎A”)。在前一句中,我将智能引号字符夹在大写字母A之间

public class CheckAscii {
    public static void main(String args[]) {
        asciiVals("A‎A"); //ANSI
        asciiVals("A‎A"); //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("");
    }
}
此查询获取

select CHAR(226), CHAR(8364), CHAR(381), CHAR(8206)

â null null null

我不知道如何在文本中查找这些字符。有人知道如何在SQL Server中形成智能报价的搜索查询吗?

如果数据类型实际上是文本,请首先将列强制转换为VARCHAR(MAX),如下所示:

SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(226)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(8364)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(381)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(8206)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(226)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(8364)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(381)+']%'
SELECT [COLUMN] FROM [TABLE] where CAST([COLUMN] AS VARCHAR(MAX)) like '%['+char(8206)+']%'