在oracle中,怎么查询有关列的数据?
发布网友
发布时间:2022-04-08 09:30
我来回答
共5个回答
懂视网
时间:2022-04-08 13:51
SQL> CREATE TABLE T_LONG (ID NUMBER, LONG_COL LONG);
表已创建。
SQL> INSERT INTO T_LONG VALUES (1, LPAD(1, 32767, ’HELLO WORLD!’));
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM T_LONG WHERE LONG_COL LIKE ’%WORLD%’
2 ;
SELECT * FROM T_LONG WHERE LONG_COL LIKE ’%WORLD%’
*第 1 行出现错误:
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 LONG
根据Oracle的建议,应该避免再使用LONG类型。如果可能应该使用TO_LOB来重建表,将表中的LONG类型转化为CLOB或BLOB类型。
这里就不考虑这种方法了,只是讨论一下对于不能重建的表如何进行查询。
如果表中的数据长度不超过32K的话,可以考虑通过类似下面的PL/SQL代码来实现:
SQL> SET SERVEROUT ON
SQL> BEGIN
2 FOR I IN (SELECT * FROM T_LONG) LOOP
3 IF INSTR(I.LONG_COL, ’WORLD’) > 0 THEN
4 DBMS_OUTPUT.PUT_LINE(I.ID);
5 END IF;
6 END LOOP;
7 END;
8 /
1
PL/SQL 过程已成功完成。
不过PL/SQL代码只能处理不超过32K的数据,超过这个限制,就无法通过PL/SQL来处理。
好在Oracle的全文索引是支持LONG类型的,建立一个CONTEXT索引,使用全文索引的查询语法就可以解决这个问题:
SQL> CREATE INDEX IND_T_LONG_COL ON T_LONG(LONG_COL) INDEXTYPE IS CTXSYS.CONTEXT;
索引已创建。
SQL> SELECT ID FROM T_LONG WHERE CONTAINS(LONG_COL, ’WORLD’) > 0;
ID
----------
1
oracle中对LONG列进行查询
标签:
热心网友
时间:2022-04-08 10:59
以两表为例。
需要用关联查询。
如有以下两张表,其中两表的deptno是关联字段。
现要求查出每个人对应的dname,可用如下语句:
select a.ename,b.dname from emp a,dept b where a.deptno=b.deptno;
查询结果:
热心网友
时间:2022-04-08 12:17
注释中包含“f”的字段:
select owner,table_name,column_name from all_col_comments where comments like '%f%';
参考以下信息:
SQL> desc all_col_comments
Name Type Nullable Default Comments
----------- -------------- -------- ------- ---------------------
OWNER VARCHAR2(30) Owner of the object
TABLE_NAME VARCHAR2(30) Name of the object
COLUMN_NAME VARCHAR2(30) Name of the column
COMMENTS VARCHAR2(4000) Y Comment on the column
类型为varchar2()的字段:
select owner,table_name,column_name from all_tab_columns where data_type='VARCHAR2';
参考以下信息:
SQL> desc all_tab_columns
Name Type Nullable Default Comments
-------------------- ------------- -------- ------- --------------------------------------------------------------------
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30) Table, view or cluster name
COLUMN_NAME VARCHAR2(30) Column name
DATA_TYPE VARCHAR2(106) Y Datatype of the column
DATA_TYPE_MOD VARCHAR2(3) Y Datatype modifier of the column
DATA_TYPE_OWNER VARCHAR2(30) Y Owner of the datatype of the column
DATA_LENGTH NUMBER Length of the column in bytes
DATA_PRECISION NUMBER Y Length: decimal digits (NUMBER) or binary digits (FLOAT)
DATA_SCALE NUMBER Y Digits to right of decimal point in a number
NULLABLE VARCHAR2(1) Y Does column allow NULL values?
COLUMN_ID NUMBER Y Sequence number of the column as created
DEFAULT_LENGTH NUMBER Y Length of default value for the column
DATA_DEFAULT LONG Y Default value for the column
NUM_DISTINCT NUMBER Y The number of distinct values in the column
LOW_VALUE RAW(32) Y The low value in the column
HIGH_VALUE RAW(32) Y The high value in the column
DENSITY NUMBER Y The density of the column
NUM_NULLS NUMBER Y The number of nulls in the column
NUM_BUCKETS NUMBER Y The number of buckets in histogram for the column
LAST_ANALYZED DATE Y The date of the most recent time this column was analyzed
SAMPLE_SIZE NUMBER Y The sample size used in analyzing this column
CHARACTER_SET_NAME VARCHAR2(44) Y Character set name
CHAR_COL_DECL_LENGTH NUMBER Y Declaration length of character type column
GLOBAL_STATS VARCHAR2(3) Y Are the statistics calculated without merging underlying partitions?
USER_STATS VARCHAR2(3) Y Were the statistics entered directly by the user?
AVG_COL_LEN NUMBER Y The average length of the column in bytes
CHAR_LENGTH NUMBER Y The maximum length of the column in characters
CHAR_USED VARCHAR2(1) Y C if maximum length is specified in characters, B if in bytes
V80_FMT_IMAGE VARCHAR2(3) Y Is column data in 8.0 image format?
DATA_UPGRADED VARCHAR2(3) Y Has column data been upgraded to the latest type version format?
HISTOGRAM VARCHAR2(15) Y
热心网友
时间:2022-04-08 13:52
protected void Button1_Click(object sender, EventArgs e)
{
string Afieldname="";//得到列的名字
ListBox1.Items.Clear();
OleDbConnection conn=new OleDbConnection();
OleDbCommand dbc = new OleDbCommand("select distint "+Afieldname+" from theTable", conn);
OleDbDataReader dr = dbc.ExecuteReader();
while (dr.Read())
{
ListBox1.Items.Add(dr[0].ToString());
}
dr.Close();
dbc.Dispose();
conn.Close();
}
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
热心网友
时间:2022-04-08 15:43
select * from test where a like '%'||'f%' or b like '%'||'f%' or c like '%'||'f%'
希望能帮助到你