有没有理由为什么Oracle是区分大小写的,而其他人喜欢sql Server和MysqL不是默认情况下?
我知道有方法来启用/禁用区分大小写,但似乎奇怪的是oracle与其他数据库不同。
我也试图理解区分大小写的原因。我可以看到“表”和“TaBlE”可以被认为是等效的,而不是等价的,但是有一个例子,情况灵敏度实际上会有区别吗?
我对数据库有点新,我目前正在上课。
默认情况下,Oracle标识符(表名,列名称等)不区分大小写。您可以使用引号(例如:SELECT * FROM“My_Table”WHERE“my_field”= 1)使它们区分大小写。 sql关键字(SELECT,WHERE,JOIN等)始终不区分大小写。
另一方面,字符串比较默认情况下是区分大小写的(例如:WHERE字段=’STRING’将只匹配它的’STRING’的列)。通过将NLS_COMP和NLS_SORT设置为适当的值,可以使它们不区分大小写(例如:分别为LINGUISTIC和BINARY_CI)。
Note: When inquiring data dictionary views (eg:
dba_tables
) the names will be in upper-case if you created them without quotes,and the string comparison rules as explained in the second paragraph will apply here.
默认情况下,一些数据库(Oracle,IBM DB2,Postgresql等)将执行区分大小写的字符串比较,其他数据库不区分大小写(sql Server,MysqL,sqlite)。这不是任何方式的标准,所以只要知道你的数据库设置是什么。