【问题标题】:SQL Comma delimeter list replace each value with single qoutes [duplicate]SQL逗号分隔列表用单引号替换每个值[重复]
【发布时间】:2020-07-18 11:10:17
【问题描述】:

我目前使用的是 sql server 2014

我有一个可以包含以下值的 sql 列

user_email
--------------------------------------------
fred.bloggs@abc.co.uk
joe.bloggs@abc.co.uk
sally.bloggs@abc.co.uk;fred.bloggs@abc.co.uk

我需要选择列并构建一个 where 子句

所以where user_email like '%sally.bloggs@abc.co.uk%' 将选择第 3 行,但如果我这样做 user_email like '%lly.bloggs@abc.co.uk%' 它不会选择第 3 行。

希望这有意义吗?

我似乎找不到解决办法。

【问题讨论】:

  • 不存储分隔数据是这里真正的解决方案。修复你的设计,解决问题。
  • 它是一个遗留应用程序,我真的别无选择。
  • 旧版应用程序必须在某个时候进行更新。还有比现在更好的开始时间吗?
  • ';' + user_email + ';' LIKE '%;lly.bloggs@abc.co.uk;%'
  • 我无法理解您的陈述“如果我要像'%lly.bloggs@abc.co.uk%' 那样执行 user_email,它不会选择第三行” - 如果您这样做,它将选择第三排?

标签: sql sql-server split csv


【解决方案1】:

在某些情况下,改进数据结构的成本确实高于它所带来的收益,这导致了使用变通方法的愿望。

请小心,使用变通方法会累积技术债务:
- 更多的事情在未来更容易出错

为了快速获胜,只需强制您要比较的字符串以所使用的分隔符开始和结束...

';' + user_email + ';' LIKE '%;' + 'lly.bloggs@abc.co.uk' + ';%'

【讨论】:

  • 我不太真的确定为什么我们需要另一个“如何在 SQL Server 中拆分分隔字符串”的副本。 ://
  • @larnu :您链接的答案是将一行拆分为几行,这是轻量级问题的重量级解决方案。为了对 OP 有所帮助,我相信为他的个人场景提供一种有用的轻量级方法是有益的。 (请随时再次关闭问题,我不是在追代表)
  • 不幸的是,我无法再次锁定它,但这确实是这个answer 或这个answer 的副本。
  • 是的.. 只是担心... + 'lly.bloggs@abc.co.uk' + ... 会直接变成... + '{loginNameTextBox.Text}' + ... 的所有加冕典礼
  • @CaiusJard - 不要编辑我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2015-01-01
  • 2015-08-18
  • 1970-01-01
  • 2020-10-04
  • 2015-06-10
相关资源
最近更新 更多