使用python连接SQL server数据,抓取数据时报“Invalid length parameter passed to the LEFT or SUBSTRING function”。
其中执行
cur.execute(sql)
时,sql语句使用到了
SUBSTRING
函数。关于这个函数的用法可自行学习,或者直接按照如下方式进行操作:
在SQL server控制台中的查询是允许函数值出现负值的(更正确的说法时这里出现负值也是可以正常执行的),而使用python抓取数据时的
cur.execute(sql)
不允许出现负值
。因此会出现sql语句在SQL server控制台可以正常执行,但是使用python抓取数据时会发生错误。
例如本人使用过程中的语句是这样的:
substring(reverse(T0.UserName00),1,charindex('\',reverse(T0.UserName00)) - 1)
此处UserName00
有None值存在,-1
之后会是负值,因此python执行时会报错。此处把-1
去掉可以正常执行(确保不会出现负值)。
个人能力十分有限,如有缪错,欢迎广大网友指正。
在设置数据库实例的密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误。
Oracle 10g 安装完成后,您可使用 dbca 命令创建新的数据库实例,或维护已有的数据库实例。
如果您安装的是 Oracle XE 数据库,则必须反安装 Oracle XE 后重新安装 Oracle XE,并在安装过程中指定非数字开头的密码 (例如 password 或 pswd123)。
ORA-00988: 口令缺失或无效[Oracle 10g会有的一个错误]
SQL> create user zkj identif
帮同事分析一个问题,一个字符串用Substring截取,怎么操作都无效,后发现,这个字符串是增强型RTF类型,该类型可能包含图片、表格和超链接等。后试着将该字符先输出在文本框里,把其中的Html格式标签显示出来,清除,再截取即可。
转载于:https://www.cnblogs.com/zzkun/archive/2012/04/05/4481818.html...
FROM DBA.dbo.cost C
报错:消息 537,级别 16,状态 3,第 1 行
Invalid length parameter passed to the LEFT or SUBSTRING function.
出错原因:那就是名称这一
看错误的字面意思就清楚,一般是substring的length长度有错误。
例如:select top 10 SUBSTRING (c_dept , 1 ,CHARINDEX (',' , c_dept)-1) from ##dd_daily
要截取c_dept字段中第一个逗号前面的字符串,如果字段里面没有逗号,substring就会出错。
可以加入case判断就不会出错。
select ...
if not exists(select 1 from EMR_SYS_APPCFG where CONFIGKEY =‘PreDefineModelConfig’ and VALUE like ‘%IsExpandUnitPMNew%’ )
UPDATE A
SET A.[VALUE]=substring(A.[VALUE],0,charindex(’/UseUnitPM>’, A.[VALUE])-1)+’’
+ ‘ExpandCurrentNote’
+substring(A.[VALUE]
看错误的字面意思就清楚,一般是substring的length长度有错误。
例如:select top 10 SUBSTRING (c_dept , 1 ,CHARINDEX (',' , c_dept)-1) from ##dd_daily
要截取c_dept字段中第一个逗号前面的字符串,如果字段里面没有逗号,substring就会出错。
可以加入case判断就不会出错。
select SUBSTRING (c_dept , 1 , case
when CHARINDEX (',' , c_d..