Oracle / Hibernate Like:查找只包含单个';'的字符串

时间:2012-05-30 02:24:06

标签: oracle hibernate

我试图查找列中只包含一个;的所有记录。

例如

  1. 一个; sdasd
  2. 作为; DASD; DASD
  3. 作为; DASD; DAS
  4. 仅返回a;sdasd

    我已尝试%;%,但会返回包含;的所有字符串。

2 个答案:

答案 0 :(得分:1)

SELECT id
  FROM your_table
 WHERE LENGTH(col) - LENGTH(REPLACE(col,';')) = 1;

是一种解决方案。

另一个使用REGEXP_LIKE:

WITH q AS (SELECT 1 ID, 'a;b;c;' str FROM dual
           UNION
           SELECT 2, ';abc' FROM dual
           UNION 
           SELECT 3, 'a;b;c;defg;h' FROM dual
           UNION
           SELECT 4, 'abcdefghi;' FROM dual
           UNION 
           SELECT 5, 'ab;cde' FROM dual
           UNION 
           SELECT 6, 'abcdef' FROM dual)
SELECT *
  FROM q 
 WHERE regexp_like(str,'^[^;]*;[^;]*$');

        ID STR
---------- ------------
         2 ;abc
         4 abcdefghi;
         5 ab;cde

答案 1 :(得分:0)

另一种可能性(不需要字符串操作):

FROM your_table
   WHERE col like '%;%' AND INSTR(col, ';', 1) = INSTR(col, ';', -1)