【问题标题】:Using a column field in SQL like or regexp operator在 SQL like 或 regexp 运算符中使用列字段
【发布时间】:2016-03-17 07:21:56
【问题描述】:

我有一个问题:

Select * 
from table 
where 
field1 LIKE '%12345%' (12345 being a column value : field2) *Works*

我想在 LIKE 运算符中使用列字段值而不是硬编码。 尝试使用 concat:

where field1 LIKE concat(concat('%',field2), '%') *doesnt work*

尝试使用 regexp_like:

where regexp_like(field1, Cast(field2 as character)) *doesnt work*

【问题讨论】:

  • 什么是“field2”?列名还是什么?你如何定义“field2”?

标签: sql sql-like vertica regexp-like


【解决方案1】:

只使用一个 concat

where field1 LIKE concat( '%',TRIM(field2), '%') 

【讨论】:

  • 我在 answer 之前测试过代码。你有错误吗? .如果不工作可能不匹配(但工作)..
  • 我已经用修剪更新了答案以清理现场......尝试
  • @Neha - 就像旁白“不起作用”不是有用的反馈给人们。 具体。它是否返回无结果、错误结果、错误消息等?这些都是不同的方式,其中建议的答案可能不起作用,并且了解细节(例如,如果结果错误,它们怎么错了/如果是错误消息,what 是错误)可能非常重要有助于引导人们帮助您,尤其是当他们无法访问您的数据也不知道您的目标是什么时(提示:在问题中添加示例数据和预期结果也会有所帮助)跨度>
【解决方案2】:

见下文:

dbadmin=> create table test1 (a varchar(100));

CREATE TABLE
dbadmin=> 

insert into test1 values('Good morining ');
 OUTPUT
--------
      1
(1 row)

dbadmin=> select * from test1 where a like '%'||a||'%';
       a
----------------
 Good morining
(1 row)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多