我想要一个SQL like查询,并且结果以首先排序的输入参数开始,结果的其余部分将按字母顺序排序.
所以,如果我有
Foobbb
aaafoo
Fooaaa
bFoob
cccfooccc
Run Code Online (Sandbox Code Playgroud)
我搜索foo我希望它排序为:
Fooaaa
Foobbb
aaafoo
bFoob
cccfooccc
Run Code Online (Sandbox Code Playgroud)
所以我最相关的项目是第一位的.想要清楚地理解和良好的表现方式吗?我可以创建一个临时表,但认为它太多了.
我试过了
DECLARE cemployer CURSOR
WITH RETURN
FOR SELECT employer
FROM ((SELECT employer_name, 1 AS grp
FROM employer e
WHERE Upper(employer_name) LIKE Upper(i_employer|| '%'))
UNION
(SELECT employer_name, 2 AS grp
FROM employer e
WHERE Upper(employer_name) LIKE Upper('%'||i_employer|| '%')))
ORDER BY grp,
employer;
OPEN cemployer;
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到了
Fooaaa
Foobbb
Run Code Online (Sandbox Code Playgroud)
在结果集的底部再次重复.DB2不允许我对outter查询进行区分.我知道我可以通过子串或定位或其他字符串函数以多种方式解决这个问题但想知道最优雅的方法来做到这一点并确保不返回重复项.
我使用db2exfmt实用程序为查询生成了访问计划,但我无法理解相同的内容.
请任何人都可以解释一下访问计划(比如括号中的数字是什么,/ ----- + ------\etc)
Access Plan:
-----------
Total Cost: 15.1619
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
3
HSJOIN
( 2)
15.1619
2
/-----+------\
4 3
TBSCAN TBSCAN
( 3) ( 4)
7.58097 7.58036
1 1
| |
4 3
TABLE: DB2INST1 TABLE: DB2INST1
TABA TABB
Q2 Q1
Run Code Online (Sandbox Code Playgroud) 我的Rails应用程序连接到远程DB2数据库,在迁移时我遇到了这个错误:
== DropLegacyProject: migrating ========================================
rake aborted!
An error has occurred, this and all later migrations canceled:
RuntimeError: Failed to execute statement due to: [IBM][CLI Driver][DB2/LINUXX8664] SQL0104N An unexpected token "LIMIT" was found following "". Expected tokens may include: "FETCH FIRST <n> ROWS ONLY". SQLSTATE=42601 SQLCODE=-104: SELECT projects.* FROM projects WHERE projects.id < 17 LIMIT 1
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我们在PCI扫描中收到"IBM DB2 Universal Database Known Default Password Vulnerability"警报.要解决这个问题,我们应该更改DB2默认密码.
DBA的任何人都可以帮助我们吗?
有关详细信息,请参阅http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2001-0051
在Windows x64上使用DB2 10.5
UPDATE dbo.datasource_databases
SET HOST = ''
WHERE ID = 1
Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=6, COLNO=1" is not allowed.. SQLCODE=-407, SQLSTATE=23502, DRIVER=3.67.28
Run Code Online (Sandbox Code Playgroud)
HOST是VARCHAR(512)NOT NULL
这是预期的行为吗?如果是这样,我应该如何解决这个问题,如果不是,可能导致这种情况?
编辑:沿着相同的行,SELECT ID, HOST from dbo.datasource_databases WHERE HOST != ''返回0行,其中检查HOST != 'some gibberish'将返回行.对我而言,这比上述行为更有意义(不应该只是把它视为HOST NOT NULL?).
所以我一直在改变QMF中的一张桌子.经过3次改动之后,我相信桌子已经进入待定的重组状态,因此我无法另外改变它.我在这个假设中是否正确?如果是这样,它有什么影响并且可以解决它,我可以简单地重新组织表并继续改变它吗?如果是这样,重新组织表的语法是什么样的?我试过
REORG TABLE PIDJBIP.TABLE_NAME_T
并收到错误:
在"REORG TABLE"之后发现了一个意外的令牌"PIDJBIP".预期的代币可能包括:"加入".SQL状态= 42601.
关于这个主题,我没有从IBM页面获得太多帮助.
我尝试恢复 DB2 数据库,但它说返回路径无效。
这是我尝试过的:
db2 restore database gyczpas from "/home/db2inst1/GYCZPAS/PAS_BACKUP/GYCZPAS.0.db2inst1.NODE0000.CATN0000.20170109092932.001" taken at 20170109092932 into gyczpas
SQL2036N The path for the file or device "/home/db2inst1/GYCZPAS/PAS_BACKUP/GYCZPAS.0.db2inst1.NODE0000.CATN000" is not valid.
Run Code Online (Sandbox Code Playgroud)
我在RESTORE用于BACKUP命令的过程中使用了相同的路径,但它失败了。可能是什么原因?
DB22 版本:v9.7
我试图删除尾随空格但没有成功:
select trim(trailing ' ' from '1234 '), '56' from sysibm.sysdummy1;
1 2
--------------------------- --
1234 56
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我想借助alter query在existng表中添加多个列.
ALTER TABLE users.UM_REG_HPTL_DET_DOC
添加列HPTL_TADDRESS3 vargraphic(50),
ADD列APPLICANT_ADDRESS3 varchar(50),
ADD栏目APPLICANT_TADDRESS3(50),
添加列aadhar_no varchar(12),
ADD列Registration_no varchar(50);
比那个错误来了
在"RESS3 vargraphic(50)"之后发现了意外的标记",".预期的令牌可能包括:"".. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 4.18.60