oracle中查詢關鍵字 like,當我用like執行模糊尋找是,探索資料量不對,表的結構如下:
-- Create tablecreate table NEOERP( ID NUMBER(22) not null, PRODUCTNAME NVARCHAR2(100) default ' ', CT_SMP_SPECIFICATION NVARCHAR2(100) default ' ', TYPENAME NVARCHAR2(50), UNIT NVARCHAR2(30) default ' ', STORECODE NVARCHAR2(100) default ' ', ROOMCODE NVARCHAR2(100) default ' ', SAMPTMPLID NVARCHAR2(100), CT_BELONG NVARCHAR2(100) default ' ', CT_MANUFACTURE NVARCHAR2(100), CT_EXPORTER_PLACE NVARCHAR2(100), REMARK NVARCHAR2(200), LOGINDATE DATE default sysdate, CT_SMP_TYPE NVARCHAR2(100), SAMPLENAME NVARCHAR2(200), SAMPLEDESCRIPTION NVARCHAR2(200), STARTDATE DATE, STATUS NVARCHAR2(2) default 'F', REMOVE_DATE DATE, TIMETYPE NVARCHAR2(10), REPORTDATE NUMBER(22), TIMEVALUE NUMBER(22))tablespace VGSM pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );-- Add comments to the columns comment on column NEOERP.PRODUCTNAME is '產品名稱';comment on column NEOERP.CT_SMP_SPECIFICATION is '規格';comment on column NEOERP.TYPENAME is '類別名稱';comment on column NEOERP.UNIT is '單位';comment on column NEOERP.STORECODE is '存貨編碼';comment on column NEOERP.ROOMCODE is '物料編碼';comment on column NEOERP.SAMPTMPLID is '樣品模版id';comment on column NEOERP.CT_BELONG is '歸屬地';comment on column NEOERP.CT_MANUFACTURE is '生產地';comment on column NEOERP.CT_EXPORTER_PLACE is '出口地';comment on column NEOERP.REMARK is '備忘';comment on column NEOERP.CT_SMP_TYPE is '樣品類型';comment on column NEOERP.SAMPLENAME is '樣品名稱';comment on column NEOERP.SAMPLEDESCRIPTION is '樣品描述';comment on column NEOERP.STARTDATE is '起始時間';comment on column NEOERP.STATUS is 'f可用 狀態';comment on column NEOERP.REMOVE_DATE is '刪除時間';comment on column NEOERP.TIMETYPE is '年月日';comment on column NEOERP.REPORTDATE is '要求報告日期';comment on column NEOERP.TIMEVALUE is '有效期間';-- Create/Recreate primary, unique and foreign key constraints alter table NEOERP add constraint PK_ERP_ID primary key (ID) using index tablespace VGSM pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
當我用SELECT * FROM NEOERP WHERE ROOMCODE LIKE '%%',來查詢時候,資料一直存在問題,查處的資料量與期望的資料量不同,
經查,是當roomcode為null造成的,
當我用SELECT * FROM NEOERP WHERE ROOMCODE IS NULL 來查詢發現這個查詢的結果是我所缺少的資料資訊。
null的含義,在我們不知道具體有什麼資料,也即未知,稱他為空白,oracle中,含有空值的表列長度為零。
等價於沒有任何值,是未知數,null與0,Null 字元串,空格不同,對空值做運算,結果仍然是空值,oracle提供了處理空值函數nvl,比較時候用 is null或者 is not null.
通過以上說明,通過SELECT * FROM NEOERP WHERE ROOMCODE LIKE '%%'查詢不到值為null的資料。
對上面sql語句進行修改後,既可以完成所需功能:
SELECT * FROM NEOERP WHERE NVL(ROOMCODE,0) LIKE '%%'