0

我的 vb.net 项目中有一个场景,用户需要从组合框中选择一个名称(或键入一个新名称)。

名称当然可以有',如Tina O'Hara,在数据库中将存储为Tina O''Hara

我的组合框是从 sql select 命令填充的。我尝试使用替换,以便名称在下拉列表中正确显示。

SqlStr = "SELECT Replace(ContactName, '''', ''') AS ddlText FROM tbl_Visits Where CustID = " & hd_CustID.value & " ORDER By ContactName"
PopulateCMBX(cmbx_ContactName, SqlStr, "Please Select")  

PopulateCMBX ... 这会从提供的 SqlStr 中获取名称列表,并使用“请选择”作为第一个选项填充组合框项目列表。

SqlStr 产生错误,因为没有匹配的'如何解决此问题。谢谢

4

2 回答 2

1

在 MS-SQL 中引用单引号时,需要用两个单引号 ('') 对每个单引号 (') 进行转义。

如果名称在数据库中存储时带有两个单引号,例如 (''),那么在进行替换时,您需要使用四个单引号 ('''')。除了这些,您还需要用单引号将字符串括起来。

这意味着您的替换应如下所示:

SqlStr = "SELECT Replace(ContactName, '''''', '''') ...

replace 中的第二个参数有 6 个单引号:4 个表示您要替换的两个单引号,2 个表示它是一个字符串。第三个参数有 4 个单引号:2 个表示单个转义引号,两个表示字符串。

于 2013-06-22T19:29:47.607 回答
0

试试这个,也许不是最好的解决方案,但它有效(检查这个例子):

select Replace(Replace(ContactName, '''', '$&'),'$&$&','''') from tbl_Visits

注意$&就像一个key,不应该影响你字段中的值,比如可以是一个词:&&k&&或者%%key%%等等。回过头来澄清一下,这不是最好的解决方案,但是有时我用过。

于 2013-06-22T19:30:45.833 回答