【问题标题】:Search in SQL for a string that contains both " and '在 SQL 中搜索同时包含 \" 和 \' 的字符串
【发布时间】:2023-02-13 23:27:31
【问题描述】:

正如标题所说,我们正在尝试使用同时包含 ' 和 " 的字符串对 SQL 数据库执行搜索。这会产生一个问题,因此字符串会随机拆分。有没有人知道一种方法来强制 SQL 将字符串视为一个长字符串而不拆分它?我们尝试使用反斜杠来转义某些字符,但是这会改变搜索的格式。

谢谢! :)

为字符串本身提供一些上下文,这是一个我不能分享的例外。它的基本格式如下:

DECLARE @Exception NVARCHAR(MAX) = '
xxxxx''xxxx''xxx""xxxxx''
'

然后发生的是 SQL 会将字符串中的 ' 视为结尾,而不是将字符串作为一个整体。

然后我们想进去过滤某列,看这个字符串哪里是完全匹配的。这是在 Azure sql 数据库中。

【问题讨论】:

  • 如果您提供示例数据和您尝试过的查询以及您期望的查询,将会更有帮助。
  • 您使用的是哪个数据库管理系统? (至少有些产品有自己的功能,在这里可能会有用。)
  • 这些字符是按特定顺序放置的,还是按任意顺序放置的?
  • 因此字符串随机分裂的地方这是什么意思?也许你可以展示一些样本数据?
  • 逃离他们。详细信息取决于您的特定数据库。您使用的是哪个数据库?

标签: sql


【解决方案1】:

" 应该只用于在 sql 中引用标识符,不应该引起任何问题

create table t (s text not null);

insert into t (s)
values ('" should not be a problem, " has no meaning inside a string');

字符串中的 ' 被自身引用,即 ''

insert into t (s)
values (' '' is quoted with itself');

如果要搜索包含 " 的字符串:

select s from t where s like '%"%'

" should not be a problem, " has no meaning inside a string

如果您不想搜索包含 ': 的字符串

select * from t where s like '%''%'

' is quoted with itself

在 Db2 11.5 上测试过,但任何符合标准的 DBMS 都可以。 db<>fiddle 目前似乎已关闭,因此我无法提供工作示例的链接

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2019-05-17
    • 2013-06-26
    • 2013-11-10
    相关资源
    最近更新 更多