2

特定のフィールドのダッシュの前のすべての文字列のみを表示するクエリを実行したいと思います。

例えば:

元のデータ:AB-123

クエリの後:AB

4

3 に答える 3

4

使用できますsubstr

SQL> WITH DATA AS (SELECT 'AB-123' txt FROM dual)
  2  SELECT substr(txt, 1, instr(txt, '-') - 1)
  3    FROM DATA;

SUBSTR(TXT,1,INSTR(TXT,'-')-1)
------------------------------
AB

またはregexp_substr(10g+):

SQL> WITH DATA AS (SELECT 'AB-123' txt FROM dual)
  2  SELECT regexp_substr(txt, '^[^-]*')
  3    FROM DATA;

REGEXP_SUBSTR(TXT,'^[^-]*')
---------------------------
AB
于 2013-09-13T09:20:39.630 に答える
0

使用できますregexp_replace

例えば

    WITH DATA AS (
         SELECT 'AB-123' as text FROM dual
         UNION ALL
         SELECT 'ABC123' as text FROM dual
    )
    SELECT 
        regexp_replace(d.text, '-.*$', '') as result
    FROM DATA d;

につながる

    WITH DATA AS (
      2      SELECT 'AB-123' as text FROM dual
      3      UNION ALL
      4      SELECT 'ABC123' as text FROM dual
      5  )
      6  SELECT
      7     regexp_replace(d.text, '-.*$', '') as result
      8  FROM DATA d;

    RESULT
    ------------------------------------------------------
    AB
    ABC123
于 2013-09-13T13:15:11.880 に答える
0

これは簡単だと思いました

 SELECT distinct
        regexp_replace(d.pyid, '-.*$', '') as result
    FROM schema.table d;

pyID 列には ABC-123、DEF-3454 が含まれます

SQL 結果:

ABCデフ

于 2016-10-04T00:41:53.217 に答える