0

列に1つだけ含まれているすべてのレコードを検索しようとして; います。

例えば

  1. a; sdasd
  2. as; dasd; dasd
  3. as; dasd; das

のみa;sdasd返されます。

試し%;%ましたが、を含むすべての文字列が返されます;

4

2 に答える 2

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

1つの解決策です。

もう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
于 2012-05-30T03:52:11.207 に答える
0

他の可能性(文字列操作は必要ありません):

FROM your_table
   WHERE col like '%;%' AND INSTR(col, ';', 1) = INSTR(col, ';', -1)
于 2012-05-30T09:29:39.873 に答える