表达式中未定义的函数'Replace',替换替代?

Boy*_*yen 3 c# sql ms-access oledbcommand

正如在这个问题中所读到的:表达式中未定义的函数'Replace' ,我收到错误"表达式中未定义的函数'替换',因为"你根本没有使用Access查询引擎",但是我用什么作为替代 ?显然"Iif,Instr的组合"会起作用,但我找不到用这些方法实际替换某些东西的方法.

我想要的只是从值中删除空格,我该怎么做?

const string strSql = "SELECT TOP 15 HOOFDGROEP.HOOFDGROEP, SUBGROEP.SUBGROEP, Artikels.*" +
                                  " FROM (Artikels LEFT JOIN HOOFDGROEP ON Artikels.HOOFDGROEPID = HOOFDGROEP.ID)" +
                                  " LEFT JOIN SUBGROEP ON Artikels.SUBGROEPID = SUBGROEP.ID WHERE REPLACE(ArtikelNaam, ' ', '') LIKE  '%' + @ArtikelNaam + '%'";

            var objCommand = new OleDbCommand(strSql, _objConnection);
            objCommand.Parameters.Add("@ArtikelNaam", OleDbType.Char).Value = naamZoeker.Replace(" ", "");
Run Code Online (Sandbox Code Playgroud)

Gor*_*son 7

如果你下载并安装了

Microsoft Access数据库引擎2010可再发行组件

那么您可以在OleDbConnection对象的连接字符串中使用以下内容...

Provider=Microsoft.ACE.OLEDB.12.0

...此Replace()功能将可用于您的查询.例如,以下代码适用于我:

using (var conn = new OleDbConnection())
{
    conn.ConnectionString =
            @"Provider=Microsoft.ACE.OLEDB.12.0;" +
            @"Data Source=C:\__tmp\testData.accdb;";
    conn.Open();
    using (var cmd = new OleDbCommand())
    {
        cmd.Connection = conn;
        cmd.CommandText =
            "UPDATE Table1 SET ProductType = Replace(ProductType, ' ', '')";
        cmd.ExecuteNonQuery();
    }
    conn.Close();
}
Run Code Online (Sandbox Code Playgroud)

请注意,您需要下载并安装与.NET应用程序具有相同"位数"的Access数据库引擎版本:32位应用程序需要32位版本的数据库引擎,而64位应用程序需要64位应用程序位版本的数据库引擎.