SQL:column'*.*是什么意思?

SQL:column'*.*是什么意思?,sql,oracle,Sql,Oracle,我有一个现有的代码,我在下面的where条件下找到了一个表 SELECT * FROM MYTABLE WHERE MYCOLUMN <> '*.*'; MYCOLUMN'*.*.'和MYCOLUMN'*'之间是否存在差异 MYCOLUMN'*.*.'是什么意思?where条件 MYCOLUMN <> '*.*' 正在专门搜索与“***”不同的文本。此搜索将包括'*',因为'*'与'*.'不同 where条件不检查正则表达式或通配符 要搜索带有*的文本,可以使用lik

我有一个现有的代码,我在下面的where条件下找到了一个表

SELECT * FROM MYTABLE WHERE MYCOLUMN <> '*.*';
MYCOLUMN'*.*.'和MYCOLUMN'*'之间是否存在差异

MYCOLUMN'*.*.'是什么意思?

where条件

MYCOLUMN <> '*.*'
正在专门搜索与“***”不同的文本。此搜索将包括'*',因为'*'与'*.'不同

where条件不检查正则表达式或通配符

要搜索带有*的文本,可以使用like条件-

MYCOLUMN'*.*.'是什么意思

如果MYCOLUMN中的值不是精确的字符串'*.*',并且不为空,则它将与该条件匹配

*不是通配符

MYCOLUMN'*.*.'和MYCOLUMN'*'之间有区别吗

Oracle 11g R2架构设置:一些测试数据:

CREATE TABLE table_name ( mycolumn ) AS
SELECT '*' FROM DUAL UNION ALL
SELECT '*.*' FROM DUAL UNION ALL
SELECT 'a.b' FROM DUAL UNION ALL
SELECT 'a' FROM DUAL UNION ALL
SELECT NULL FROM DUAL;
问题1:

问题2:

查询3:如果要在匹配中使用通配符,请使用带有%的LIKE运算符作为通配符,而不是*

:匹配所有不为NULL且不包含值的值。人物:

| MYCOLUMN |
|----------|
|        * |
|        a |
问题4:

:匹配所有非空且不包含零个或多个字符的值。这将永远不会匹配任何内容

No data found.
MYCOLUMN'*.*.'和MYCOLUMN'*'之间有区别吗

是的,您正在将不同的文本文字与进行比较

*没有特殊意义。具体来说,它不是通配符。从模式上看,您的列可能包含文件名,您稍后在操作系统级别对这些值进行了一些处理,这些值可能是通配符。但对于实际的查询,它们不是

与相同!=,因此,您要查找的行在第一种情况下,列的全部内容不是文字字符串'*.*',或者在第二种情况下,列的全部内容不是文字字符串'*'。除null外,任何值都不能同时匹配这两个条件。null也不匹配,因为它不等于或不等于任何东西;但是比较的结果是“未知”的,因此不包括在结果集中

作为演示:

create table t42(id number, mycolumn varchar2(20));
insert into t42 (id, mycolumn) values (1, '*');
insert into t42 (id, mycolumn) values (2, 'The*is embedded');
insert into t42 (id, mycolumn) values (3, 'The * is embedded');
insert into t42 (id, mycolumn) values (4, '*.*');
insert into t42 (id, mycolumn) values (5, 'The*.*is embedded');
insert into t42 (id, mycolumn) values (6, 'The *.* is embedded');
insert into t42 (id, mycolumn) values (7, 'No asterisk');
insert into t42 (id, mycolumn) values (8, null);
对于第一个条件,只有ID 3和8被排除在外3因为该条件为真,8因为它未知:

select * from t42 where MYCOLUMN <> '*.*';

        ID MYCOLUMN            
---------- --------------------
         1 *                   
         2 The*is embedded     
         3 The * is embedded   
         5 The*.*is embedded   
         6 The *.* is embedded 
         7 No asterisk         

6 rows selected. 
对于第二个条件,仅排除ID 1和8:

select * from t42 where MYCOLUMN <> '*';

        ID MYCOLUMN            
---------- --------------------
         2 The*is embedded     
         3 The * is embedded   
         4 *.*                 
         5 The*.*is embedded   
         6 The *.* is embedded 
         7 No asterisk         

6 rows selected. 

不等于比较没有通配符。即不等于**,或不等于*。LIKE不使用*字符作为通配符。另外,如果您要链接到文档,请链接到Oracle官方文档,而不是经常与Oracle无关的第三方文档。您是对的,我的错!编辑我的答案以链接到oracle文档。泰
| MYCOLUMN |
|----------|
|        * |
|        a |
SELECT *
FROM   table_name
WHERE  MYCOLUMN NOT LIKE '%'
No data found.
create table t42(id number, mycolumn varchar2(20));
insert into t42 (id, mycolumn) values (1, '*');
insert into t42 (id, mycolumn) values (2, 'The*is embedded');
insert into t42 (id, mycolumn) values (3, 'The * is embedded');
insert into t42 (id, mycolumn) values (4, '*.*');
insert into t42 (id, mycolumn) values (5, 'The*.*is embedded');
insert into t42 (id, mycolumn) values (6, 'The *.* is embedded');
insert into t42 (id, mycolumn) values (7, 'No asterisk');
insert into t42 (id, mycolumn) values (8, null);
select * from t42 where MYCOLUMN <> '*.*';

        ID MYCOLUMN            
---------- --------------------
         1 *                   
         2 The*is embedded     
         3 The * is embedded   
         5 The*.*is embedded   
         6 The *.* is embedded 
         7 No asterisk         

6 rows selected. 
select * from t42 where MYCOLUMN <> '*';

        ID MYCOLUMN            
---------- --------------------
         2 The*is embedded     
         3 The * is embedded   
         4 *.*                 
         5 The*.*is embedded   
         6 The *.* is embedded 
         7 No asterisk         

6 rows selected.