Sql 无法在oracle中使用中间值
我无法理解:在>=和之间,您似乎在顶部查询中使用了小写的“p”,在第二个查询中使用了大写的“p”。这是故意的吗?您似乎在顶部查询中使用了小写字母“p”,在第二个查询中使用了大写字母“p”。这是故意的吗Sql 无法在oracle中使用中间值,sql,oracle,Sql,Oracle,我无法理解:在>=和之间,您似乎在顶部查询中使用了小写的“p”,在第二个查询中使用了大写的“p”。这是故意的吗?您似乎在顶部查询中使用了小写字母“p”,在第二个查询中使用了大写字母“p”。这是故意的吗 SELECT * FROM names WHERE name BETWEEN 'Ankit' AND 'P' 还应该返回所有三行-我刚才用您的示例验证了它是这样做的。你确定你做的测试正确吗?可能您在其他会话中插入了数据,但没有提交其他行 还应该返回所有三行-我刚才用您的示例验证了它是这样
SELECT *
FROM names
WHERE name BETWEEN 'Ankit' AND 'P'
还应该返回所有三行-我刚才用您的示例验证了它是这样做的。你确定你做的测试正确吗?可能您在其他会话中插入了数据,但没有提交其他行
还应该返回所有三行-我刚才用您的示例验证了它是这样做的。你确定你做的测试正确吗?可能您在其他会话中插入了数据,但没有提交其他行?我很确定这与您的语法无关,与数据库设置无关。我已经重新创建了您的测试场景,与其他人一样,两个查询返回您期望的结果都没有问题。您是否检查了前面提到的NLS_会话_参数?我确信这与您的语法无关,与您的数据库设置有关。我已经重新创建了您的测试场景,与其他人一样,两个查询返回您期望的结果都没有问题。您是否检查了前面提到的NLS_会话_参数?SQL代码不区分大小写。 字符串值和字符串比较区分大小写 你自己看看:
SELECT CASE WHEN 'a' = 'A' THEN 'string comparison is case insensitive'
WHEN 'a' <> 'A' THEN 'string comparison is case sensitive'
END
FROM dual;
当'a'='a'时选择大小写,然后选择'字符串比较不区分大小写'
当“a”为“a”时,则“字符串比较区分大小写”
结束
来自双重;
SQLcode不区分大小写。
字符串值和字符串比较区分大小写
你自己看看:
SELECT CASE WHEN 'a' = 'A' THEN 'string comparison is case insensitive'
WHEN 'a' <> 'A' THEN 'string comparison is case sensitive'
END
FROM dual;
当'a'='a'时选择大小写,然后选择'字符串比较不区分大小写'
当“a”为“a”时,则“字符串比较区分大小写”
结束
来自双重;
Nut 100%确定,但由于它只有3行,您可以尝试:
SELECT *
FROM names
WHERE (name BETWEEN "Ankit" AND "P")
OR (name BETWEEN "ankit" AND "p")
Nut 100%确定,但因为只有3行,您可以尝试:
SELECT *
FROM names
WHERE (name BETWEEN "Ankit" AND "P")
OR (name BETWEEN "ankit" AND "p")
首先,Oracle VARCHAR2类型区分大小写 其次,检查名称开头是否没有空格,如下所示:
" Bob"
" Mac"
使用微调功能检查这是否导致故障:
SELECT *
FROM names
WHERE trim(name) BETWEEN 'Ankit' AND 'P'
如果这没有帮助,请检查您的数据库的语言和排序顺序是否正确
编辑:由于上述建议无法解决您的问题,您可以尝试以下方法:
DUMP
功能检查:
SELECT DUMP(name), name FROM names
你应该得到这样的东西:
Typ=1 Len=3: 66,111,98 Bob
...
验证Len
的长度是否正确SELECT * FROM NLS_SESSION_PARAMETERS
SELECT * FROM NLS_DATABASE_PARAMETERS
SELECT * FROM NLS_INSTANCE_PARAMETERS
检查这三个查询的结果,并验证排序、语言和字符集上的参数是否正确首先,Oracle VARCHAR2类型区分大小写 其次,检查名称开头是否没有空格,如下所示:
" Bob"
" Mac"
使用微调功能检查这是否导致故障:
SELECT *
FROM names
WHERE trim(name) BETWEEN 'Ankit' AND 'P'
如果这没有帮助,请检查您的数据库的语言和排序顺序是否正确
编辑:由于上述建议无法解决您的问题,您可以尝试以下方法:
DUMP
功能检查:
SELECT DUMP(name), name FROM names
你应该得到这样的东西:
Typ=1 Len=3: 66,111,98 Bob
...
验证Len
的长度是否正确SELECT * FROM NLS_SESSION_PARAMETERS
SELECT * FROM NLS_DATABASE_PARAMETERS
SELECT * FROM NLS_INSTANCE_PARAMETERS
检查这三个查询的结果,并验证排序、语言和字符集上的参数是否正确某些NLS设置可能会产生这种效果。很有意思的是可以看到以下结果:select*from NLS_SESSION_PARAMETERS,其中parameter in('NLS_LANGUAGE','NLS_SORT','NLS_COMP');某些NLS设置可能会产生这种效果。很有意思的是可以看到以下结果:select*from NLS_SESSION_PARAMETERS,其中parameter in('NLS_LANGUAGE','NLS_SORT','NLS_COMP');你在比较苹果和橙子——你在其中一个中使用了小写的p,在另一个中使用了大写的p。普通人SQL是不区分大小写的,每个人都知道……不,它不是。但这确实不会对您的查询产生任何影响——所有三个名称都“小于”p和p。似乎没有人(包括我)能复制你的问题;我建议您发布完整的create table、insert和select语句来重现问题。此外,您还可以回答Gary关于NLS设置的问题(除非神秘的“boss sql不区分大小写”应该是这个问题的答案?“common man”=/=“拜托,伙计”您有一个工作查询,为什么要将其更改为在两者之间使用?就我个人而言,我更喜欢原始语法而不是中间语法,因为人们经常混淆它是>=和<还是其他组合,因此您无法知道开发人员的实际意图(以及查询是否正确)。在我看来,明确地说出你想要的更好。你在比较苹果和橙子——你在一个地方使用小写的p,在另一个地方使用大写的p。普通人SQL不区分大小写每个人都知道……不,它不是。但这确实不会对您的查询产生任何影响——所有三个名称都“小于”p和p。似乎没有人(包括我)能复制你的问题;我建议您发布完整的create table、insert和select语句来重现问题。此外,您还可以回答Gary关于NLS设置的问题(除非神秘的“boss sql不区分大小写”应该是这个问题的答案?“common man”=/=“拜托,伙计”您有一个工作查询,为什么要将其更改为在两者之间使用?个人的