Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2动态搜索_Db2 - Fatal编程技术网

DB2动态搜索

DB2动态搜索,db2,Db2,我需要创建搜索(如“%-99”或“%NON%”)——在DB2的SYS中的所有列中都有搜索表——代码如下 ---请寻求帮助——这是测试代码——但我有DB2数据库错误:错误[42703][IBM][DB2/LINUXX8664]SQL0206N“WHERE”在使用它的上下文中无效 声明全局临时表SESSION.TEMP\u DINAMIC\u TEST\u SEARCH ( TABSET VARCHAR(128) ,TABSCHEMA VARCHAR(128) ,TABNAME VARCHAR(12

我需要创建搜索(如“%-99”或“%NON%”)——在DB2的SYS中的所有列中都有搜索表——代码如下 ---请寻求帮助——这是测试代码——但我有DB2数据库错误:错误[42703][IBM][DB2/LINUXX8664]SQL0206N“WHERE”在使用它的上下文中无效

声明全局临时表SESSION.TEMP\u DINAMIC\u TEST\u SEARCH ( TABSET VARCHAR(128) ,TABSCHEMA VARCHAR(128) ,TABNAME VARCHAR(128) ,列名称VARCHAR(128) ,行计数BIGINT ) 提交时保留未记录的行 ;


使用了错误的表达式。
试试这个:

SELECT 
   'INSERT INTO SESSION.TEMP_DINAMIC_TEST_SEARCH SELECT ''' 
|| ''' ,''' || TABLE_SCHEM || ''',''' || TABLE_NAME || ''',''' || COLUMN_NAME || ''', COUNT( DISTINCT(' || COLUMN_NAME || ')) FROM '
|| '"' ||  TABLE_SCHEM || '"."' || TABLE_NAME|| '" WHERE "' || COLUMN_NAME || '" LIKE ''%-99''' AS S
FROM SYSIBM.SQLCOLUMNS
WHERE TABLE_SCHEM = 'DWD' AND TABLE_NAME LIKE 'T_X_%'
/*
AND 
(
   TYPE_NAME LIKE '%CHAR' 
OR TYPE_NAME LIKE '%GRAPHIC'
OR TYPE_NAME LIKE '%CLOB'
)
*/
WITH UR
顺便说一句, 值得为字符串列生成
INSERT-SELECT
语句,如注释掉的行所示。

尽量不要在
db2forluw
中使用
SYSIBM
模式中的表-它们没有文档记录,并且它们的内容可能会在没有任何通知的情况下随一些新发行版/fixpack而更改。使用
SYSCAT
视图-在您的案例中使用
SYSCAT.COLUMNS
视图。

谢谢标记。要使信息代码正常工作,如果我排除where条件(where列名称,如“%-99”),它将从--loop表中给出count(distinct(columns)),但当我包括where(where列名称,如“%-99”)时,它将给出错误。很抱歉,我没有收到您的注释。您是否尝试过我提供的经修订的(即您提到的那一行)声明?您现在得到的错误/意外结果是什么?似乎代码在第一个版本“WHERE”| | COLUMN| | | NAME”中工作,如“%-99”,有明显的撇号错误以及我在代码中使用的位置。感谢马克为你所做的一切活动和帮助。
SELECT 
   'INSERT INTO SESSION.TEMP_DINAMIC_TEST_SEARCH SELECT ''' 
|| ''' ,''' || TABLE_SCHEM || ''',''' || TABLE_NAME || ''',''' || COLUMN_NAME || ''', COUNT( DISTINCT(' || COLUMN_NAME || ')) FROM '
|| '"' ||  TABLE_SCHEM || '"."' || TABLE_NAME|| '" WHERE "' || COLUMN_NAME || '" LIKE ''%-99''' AS S
FROM SYSIBM.SQLCOLUMNS
WHERE TABLE_SCHEM = 'DWD' AND TABLE_NAME LIKE 'T_X_%'
/*
AND 
(
   TYPE_NAME LIKE '%CHAR' 
OR TYPE_NAME LIKE '%GRAPHIC'
OR TYPE_NAME LIKE '%CLOB'
)
*/
WITH UR