【问题标题】:Find Specific Values using SQL Like Statement使用 SQL Like 语句查找特定值
【发布时间】:2018-11-30 10:05:31
【问题描述】:

我正在尝试根据今天的日期从表中的文件中读取一个文件。例如,如果今天是 11 月 21 日,我想显示 LIST_21-11-2018。这是我的查询:

CREATE TABLE "FILE_LIST" (
"FILENAME" VARCHAR2(40),
"STATUS" CHAR(1 Byte)
);

INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_20-11-2018','N');
INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_21-11-2018','N');
INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_22-11-2018','N');
INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_23-11-2018','N');

SELECT FILENAME FROM FILE_LIST WHERE FILENAME LIKE %'TO_CHAR(SYSDATE,'DD-MM-YYYY')'% AND STATUS = 'N'

LIKE 语句似乎不起作用。希望知道我的错误是......

【问题讨论】:

    标签: sql oracle sql-like sysdate


    【解决方案1】:

    试试这个:

    SELECT FILENAME FROM FILE_LIST WHERE FILENAME LIKE '%' || TO_CHAR(SYSDATE,'DD-MM-YYYY') || '%' AND STATUS = 'N';
    

    【讨论】:

      【解决方案2】:

      % 字符必须在您要查找的字符串内:

      CREATE TABLE "FILE_LIST" (
      "FILENAME" VARCHAR2(40),
      "STATUS" CHAR(1 Byte)
      );
      
      INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_20-11-2018','N');
      INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_21-11-2018','N');
      INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_22-11-2018','N');
      INSERT INTO "FILE_LIST" ("FILENAME","STATUS") VALUES('LIST_23-11-2018','N');
      
      SELECT FILENAME FROM FILE_LIST WHERE FILENAME LIKE '%' + TO_CHAR(SYSDATE,'DD-MM-YYYY') + '%' AND STATUS = 'N'
      

      【讨论】:

      • 我已经尝试过了,但它似乎不起作用。也许你不能在字符串之间插入 TO_CHAR(SYSDATE, 'DD-MM-YYYY')。
      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多