天道酬勤,学无止境

查询字符串键是否区分大小写?(Are query string keys case sensitive?)

问题

假设我有一个这样的网址:

http://www.example.com?key=123&KEY=198

那会是什么结果

request.querystring("key")

and 

request.querystring("KEY")

我有点困惑。

回答1

URI的RFC表示:

6.2.2.1。 案例规范化

当URI使用通用语法的组件时,始终会应用组件语法等效规则。 也就是说,方案和主机不区分大小写,因此应规范化为小写。 例如,URI等效于http://www.example.com/。

除非该方案另有明确定义,否则其他通用语法组件均假定为区分大小写的(请参见第6.2.3节)。

请注意,方案(此处为“ http”),主机(服务器名称)不区分大小写,但无论如何都应小写。 其余的区分大小写,除非您使用不同的方案明确表明它应该不区分大小写。

因此,根据规范,在所有基于http的URI中,key和KEY是不同的东西。

编辑:@Nicholas在假设权限定义了它接受的内容方面是部分错误的,这对于定义自己的URI的自定义方案和权限来说是正确的,但是http是每个人都遵循的定义明确的规范(或者您可以使用http查询例如,用竖线字符作为分隔符。想象一下那里的混乱!)

HTTP的RFC规范说:

方案和主机不区分大小写,通常以小写形式提供; 所有其他组件都以区分大小写的方式进行比较。 除“保留”集中的字符外的其他字符等效于其百分比编码的八位字节:正常形式是不对它们进行编码(请参阅[RFC3986]的2.1和2.2节)。

因此,规范中为HTTP方案定义的URI的查询部分区分大小写。 如果Microsoft对于查询字符串具有不区分大小写的解析器,则它不符合规范。 并不是说我觉得这种挑剔的程度确实很重要。

回答2

@gbjbaanb的答案不正确:RFC仅指定查询字符串的允许字符集。 像URI的路径片段组件一样,查询URI组件仅对提供资源的授权机构有意义。

该内容是否区分大小写完全取决于该权限。

对于C#和IIS, HttpRequest对象中已解析查询字符串的后备存储是System.Collections.Specialized.NameValueCollection ,它碰巧不区分大小写(默认情况下)。

由于该类提供了其他构造函数,因此可以提供不同的相等比较器,因此绝对没有阻止它实现区分大小写的方法。

此外,由于页面本身(和客户端javascript)可以访问原始URI,因此他们可以随意使用它进行任何操作。

如果查询字符串是由于提交HTML表单而生成的,则关键字(名称)来自表单控件name属性的值,HTML规范说该属性区分大小写。 但是据我所知,没有人真正做到这一点。

因此,最终,您必须知道查询字符串中的请求处理程序期望什么。 它可能(或可能不)区分大小写。

回答3

据hurl.it, key将等于123KEY198 。 它们可以作为两个不同的查询字符串进行访问。

回答4

简而言之,在许多编程语言中,它们被认为是相等的。

URL的不同部分在区分大小写方面有所不同:

  • 协议(http)-不区分大小写
  • 主机名(example.com)-不区分大小写
  • 路径(/folder/document.html)-区分大小写
  • 查询字符串键(?fuzz = bar或?FUZZ = bar)-不区分大小写
  • 查询字符串值(?fuzz = bar&buzz = BAR)-区分大小写

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 区分大小写的SQL Server 2008唯一列(SQL Server 2008 Unique Column that is Case Sensitive)
    问题 有没有办法使一列既唯一又区分大小写? 我希望能够放 abcde和ABCDE 在唯一列中。 回答1 可以通过唯一约束来强制唯一性。 唯一索引是否区分大小写由服务器(或表的)排序规则定义。 您可以通过以下查询获取数据库的当前排序规则: SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation; 并且您应该获得类似以下内容的信息: SQLCollation ———————————— SQL_Latin1_General_CP1_CI_AS 此处,整理末尾的“ CI_AS”表示:CI =不区分大小写,AS =区分重音。 可以将其更改为您需要的任何形式。 如果您的数据库和/或表确实具有区分大小写的排序规则,则我希望索引的唯一性也区分大小写,例如,您的abcdef和ABCDEF都应被视为唯一字符串。 马克 更新: 我刚刚尝试了此操作(SQL Server 2008 Developer Edition x64)-对我有用(我的数据库通常使用“ Latin1_General_CI_AS归类,但我甚至可以为每个表/每个VARCHAR列定义另一个)” CREATE TABLE TestUnique (string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)
  • MySQL中大小写问题
    MySQL中大小写问题 1.MySQL大小写敏感规则MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写敏感(MySQL有一个只读的系统变量lower_case_file_system,其值反映的正是当前文件系统是否区分大小写)因此:在Windows下Mysql的数据库和表名是大小写不敏感的,而在大多数类型的Unix系统中是大小写敏感的。 以下是MySQL详细的大小写区分规则:在Linux下: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的; 4、变量名也是严格区分大小写的; 在Windows下: 全部不区分大小写 补充:1.MySQL中有一个系统变量:lower_case_table_names,专门用来配置是否区分据库名与表名的大小写。 如果你的系统是Windows,而你又希望mysql能够区分大小写,那么你可以在my.ini文件中,在[mysqld]一节的最后,加入如下部分:[plain] view plain copy #If set to 0, table names are stored as specified and comparisons are case sensitive. #If set to 1
  • MongoDB:是否可以进行不区分大小写的查询?(MongoDB: Is it possible to make a case-insensitive query?)
    问题 例子: > db.stuff.save({"foo":"bar"}); > db.stuff.find({"foo":"bar"}).count(); 1 > db.stuff.find({"foo":"BAR"}).count(); 0 回答1 您可以使用正则表达式。 在您的示例中,将是: db.stuff.find( { foo: /^bar$/i } ); 不过,我必须说,也许您可​​以在输入过程中小写(或大写)该值,而不是每次找到它都会产生额外的成本。 显然,这不适用于人们的姓名等,但可能适用于诸如标签之类的用例。 回答2 更新: 原来的答案现在已经过时了。 Mongodb现在支持具有许多功能的高级全文搜索。 原始答案: 应该注意的是,使用正则表达式的不区分大小写的/ i进行搜索意味着mongodb无法按索引进行搜索,因此对大型数据集的查询可能需要很长时间。 即使只有很小的数据集,它也不是很有效。 您获得的CPU命中率比查询授权要大得多,如果您要实现规模化,这可能会成为一个问题。 或者,您可以存储大写副本并对其进行搜索。 例如,我有一个User表,该表的用户名是大小写混合的,但是id是用户名的大写副本。 这确保了区分大小写的复制是不可能的(不允许同时包含“ Foo”和“ foo”),并且我可以通过id = username.toUpperCase()进行搜索
  • OData查询$ filter条件和区分大小写(OData query $filter conditions and case-sensitivity)
    问题 OData是否指定要区分大小写还是不区分大小写地评估字符串字段的过滤条件? 示例:(来自文档) /Suppliers?$filter=Address/City eq 'Redmond' 这是否区分大小写? 如果我想同时提供这两种选择,该如何表达? 有一个tolower()函数可以像这样使用: /Suppliers?$filter=tolower(Address/City) eq 'redmond' 或者 /Suppliers?$filter=tolower(Address/City) eq tolower('Redmond') 是否存在更简洁的方式来表示不区分大小写的匹配? 回答1 “ eq”运算符应该区分大小写。 当前建议使用tolower(或toupper)。 回答2 我希望这取决于您的数据库排序规则设置,因为odata服务只是在执行查询。 如果Vitek的答案正确,那么odata会对结果集进行一些查询后过滤,那应该很奇怪,对吧? 回答3 它不依赖于数据库。 即使您以不区分大小写的方式对数据库执行查询,OData也会进行自己的附加过滤并过滤掉您的数据。 回答4 现在可以通过在ODataUriResolver上设置EnableCaseInsensitive = true来进行不区分大小写的比较。 我将此与Microsoft.AspNetCore.OData 7.1
  • MySQL区分大小写的查询(MySQL case sensitive query [duplicate])
    问题 这个问题已经在这里有了答案: 如何在MySQL上进行SQL区分大小写的字符串比较? (11个答案) 1年前关闭。 之前曾在此网站上询问过此问题,但我找不到足够的答案。 如果我正在执行类似的查询: Select Seller from Table where Location = 'San Jose' 我怎样才能让它只退回地点为“圣何塞”的卖家,而不是“圣何塞”或其他地点的卖家? 回答1 默认情况下,MySQL查询不区分大小写。 以下是寻找“值”的简单查询。 但是它将返回“ VALUE”,“ value”,“ VaLuE”等。 SELECT * FROM `table` WHERE `column` = 'value' 好消息是,如果您需要进行区分大小写的查询,则使用BINARY运算符非常容易,它会强制进行逐字节比较: SELECT * FROM `table` WHERE BINARY `column` = 'value' 回答2 要改善詹姆斯的出色答案: 最好将BINARY放在常量前面: SELECT * FROM `table` WHERE `column` = BINARY 'value' 将BINARY放在column前面将防止在该列上使用任何索引。 回答3 虽然列出的答案是正确的,但我是否建议您,如果您的专栏是保留区分大小写的字符串,则请阅读文档并相应地更改表定义。
  • MySQL查询不区分大小写问题
    现象 在使用MySQL字符串查询的时候遇到这么一个问题,查询没有区分大小写,如下图所示 查询name的时候,使用A去查询或者使用a去查询,结果是一样的。 限定讨论范围 仅讨论表的创建;仅讨论表中列值的大小写查询问题;仅讨论字符集编码utf8,排序规则utf8_general_ci,utf8_bin; 原因 MySQL字符集与排序规则 首先要说到MySQL的字符集与排序规则,在创建一张表时,可以指定表的字符集与排序规则,也可以指定列的字符集排序规则。(本文不讨论数据库各个级别配置对列的字符集和排序规则的影响)。影响查询结果的是该列的排序规则,如上文中中展示的查询结果,name字段设置的排序规则就是utf8_general_ci。如果通过命令修改name列的排序规则为utf8_bin,则查询时候能够区分大小写,如下图所示。 在确定了字符集后,影响查询是否支持大小写的是列的排序规则。 总结 字符集是一套符号和编码,而排序规则则是在字符集内用于比较字符的一套规则。仅针对使用MySQL中utf8的的字符集,将英文字母“A”与“a”编码存入磁盘,所以读取出来的数据是区分大小写的。但是在查询的时候,从磁盘中获取utf8解码后的字符,再通过排序规则来比较,如果使用的是utf8_general_ci,则查询过程中不区分大小写,如果使用的是utf8_bin,则查询过程区分大小写。 来源:https:/
  • MySQL资料总结(下)—— MySQL常见面试题
    mysql 中 myisam 与 innodb 的区别 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败; 3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。 MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 也就是说:InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针。 4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快
  • MySQL:SELECT语句区分大小写吗?(MySQL: is a SELECT statement case sensitive?)
    问题 谁能告诉我默认情况下MySQL SELECT查询是区分大小写还是不区分大小写? 如果没有,我将必须发送什么查询,以便可以执行以下操作: SELECT * FROM `table` WHERE `Value` = "iaresavage" 实际上, Value的真正Value是IAreSavage 。 回答1 它们不区分大小写,除非您进行二进制比较。 回答2 您可以将值和传递的参数小写: SELECT * FROM `table` WHERE LOWER(`Value`) = LOWER("IAreSavage") 另一种(更好的)方法是按照文档中所述使用COLLATE运算符 回答3 使用二进制 这是一个简单的选择 SELECT * FROM myTable WHERE 'something' = 'Something' = 1 这是带有二进制的选择 SELECT * FROM myTable WHERE BINARY 'something' = 'Something' 或者 SELECT * FROM myTable WHERE 'something' = BINARY 'Something' = 0 回答4 比较不区分大小写当列使用的对照,其与端部_ci (例如默认latin1_general_ci核对),并且它们是大小写敏感的,当列使用的对照,其与端部_cs或_bin
  • 如何编写区分大小写的MS Access查询?(How to write Case Sensitive Query for MS Access?)
    问题 我想知道区分大小写的MS Access选择查询。 我有两个VitualMonitorName值,如下所示 VCode VirtualMonitorName Row 1 (1, 'VM1'); Row 2 (2, 'Vm1'); 这两个值是不同的。 如果我写 "SELECT VCode FROM VirtualMaster WHERE VirtualMonitorName like '" + Vm1 + "'"; 它仅答复VCode = 1。 回答1 您可以将StrComp()函数与vbBinaryCompare ,以进行区分大小写的比较。 这是“即时”窗口中的示例,用于显示StrComp()工作方式。 有关更多详细信息,请参见访问帮助主题。 ? StrComp("a", "A", vbBinaryCompare) 1 ? StrComp("a", "A",vbTextCompare) 0 如果前两个参数的值相等,则StrComp()返回0;如果两个参数不相等,则返回1或-1;如果其中一个参数为Null,则返回Null。 要在查询中使用该函数,请提供vbBinaryCompare常量的值(0)而不是其名称。 SELECT VCode FROM VirtualMaster WHERE StrComp(VirtualMonitorName, "Vm1", 0) = 0
  • LIKE运算符是否对MSSQL Server区分大小写?(Is the LIKE operator case-sensitive with MSSQL Server?)
    问题 在有关LIKE运算符的文档中,没有任何有关其区分大小写的信息。 是吗? 如何启用/禁用它? 如果这很重要,我正在Microsoft SQL Server 2005安装中查询varchar(n)列。 回答1 区分大小写的不是运算符,而是列本身。 执行SQL Server安装时,将为实例选择默认排序规则。 除非另有明确说明(请在下面检查collat​​e子句),否则在创建新数据库时它将继承实例的排序规则,而在创建新列时将继承其所属数据库的排序规则。 像sql_latin1_general_cp1_ci_as这样的排序sql_latin1_general_cp1_ci_as规定了应如何对待列的内容。 CI代表不区分大小写,AS代表重音。 有关排序规则的完整列表,请访问https://msdn.microsoft.com/zh-cn/library/ms144250(v=sql.105).aspx (a)检查实例排序规则 select serverproperty('collation') (b)检查数据库排序规则 select databasepropertyex('databasename', 'collation') sqlcollation (c)使用其他排序规则创建数据库 create database exampledatabase collate sql_latin1
  • MySQL不区分大小写但区分口音的UTF8唯一键(MySQL Case Insensitive but Accent Sensitive UTF8 Unique Key)
    问题 我知道科幻小说中有很多类似的问题,但我认为我的观点与众不同,足以提出一个新的问题。 我有一个表,其中有一个单列为utf8和utf8_unicode_ci。 它在此列上还有一个唯一键,以及另一个标记语言代码的列。 列中的数据使用许多不同的脚本(拉丁字母,带有不同的口音,中文和俄语等)。 问题是我有时会想输入两个词,它们的含义不同,只是变音符的意思不同(即西班牙语ano vsaño)。 由于utf8_unicode_ci不区分大小写和重音,因此它认为它们是相同的,只允许我输入一个。 糟透了。 理想情况下,我只是将整个列切换为不区分大小写但区分重音的某种排序规则,但这似乎不存在。 许多不同的东西都使用此列,因此我不希望将该列的默认排序规则更改为utf8_bin,以免混淆大小写。 因此,所有这些都说明了,我需要一种解决方案,该解决方案不会影响击中此列的许多现有查询中的默认区分大小写,但允许我添加仅带有变音符号的单词。 有想法吗? 如果需要的话,我只会将唯一键约束切换到utf8_bin,但我不想这样做,因为我从不希望表中的两件事仅因大小写而不同。 回答1 我唯一能想到的(没有找到适合您需要的排序规则)是在应用程序层(MySQL外部)进行一些更改,以照顾到差异化。 例如,由于您不关心大小写,因此可以以编程方式执行一些操作来降低数据库中所有行的大小写。 然后将排序规则更改为utf8_bin
  • firebase查询方法startAt()采用区分大小写的参数(firebase query methods startAt() taking case sensitive parameters)
    问题 这段代码工作正常。 我想要的唯一改进是-当我传递“ Pi”时,它将获取所有以“ Pi”名称开头的项目对象,但是当我输入“ pi”时,它什么也不会返回! 这意味着我希望此方法startAt(itemName)不区分大小写。 因此,在那种情况下,“ Pi”或“ pi”等任何东西(小写或大写)都可以使用。 //5. Get menu items from RestaurantMenu this.getMenuItemFromRestaurantMenu = function(callback, itemName) { var ref_restMenu = firebase.database().ref() .child('Restaurants') .child('Company') .child('menu'); //Check if item is already exist! ref_restMenu.orderByChild("itemName").startAt(itemName).once("value", function(snapshot) { var data = snapshot.val(); if(data !== null) { //We will ger item name and restaurant id from this data
  • SQL语法区分大小写吗?(Is SQL syntax case sensitive?)
    问题 SQL区分大小写。 我已经使用了MySQL和SQL Server,它们似乎都不区分大小写。 总是这样吗? 该标准是否定义区分大小写? 回答1 SQL关键字不区分大小写( SELECT , FROM , WHERE等),但通常用大写字母表示。 但是,在某些设置中,表名和列名区分大小写。 MySQL有一个配置选项来启用/禁用它。 通常,区分大小写的表名和列名是Linux MySQL上的默认名称,不区分大小写的名称曾经是Windows上的默认名称,但是现在安装程序在安装过程中询问了此问题。 对于MSSQL,它是数据库排序规则设置的函数。 这是关于名称区分大小写的MySQL页面 这是MSDN中有关MSSQL归类的文章 回答2 这不是严格的SQL语言,但是在SQL Server中,如果您的数据库排序规则区分大小写,则所有表名都区分大小写。 回答3 在Sql Server中,这是一个选项。 打开它很烂。 我不确定MySql。 回答4 标识符和保留字不应该区分大小写,尽管许多人遵循惯例,保留字使用大写,标识符使用Pascal大小写。 参见SQL-92第2节。 5.2 回答5 SQL92规范指出标识符可以带引号或不带引号。 如果双方table_name == TAble_nAmE引号,则它们始终不区分大小写,例如table_name == TAble_nAmE 。 但是
  • Django中的唯一模型字段和区分大小写(postgres)(Unique model field in Django and case sensitivity (postgres))
    问题 考虑以下情况:- 假设我的应用允许用户在其国家中创建州/省。 为了清楚起见,我们在这里仅考虑ASCII字符。 在美国,用户可以创建一个名为“德克萨斯州”的州。 如果该应用程序在内部使用,可以说用户不在意它是否拼写为“ texas”或“ Texas”或“ teXas” 但重要的是,如果数据库中已存在“德州”,则系统应阻止创建“德州”。 如果模型如下所示: class State(models.Model): name = models.CharField(max_length=50, unique=True) 在postgres中,唯一性将区分大小写; 也就是说,postgres将允许用户创建“德克萨斯州”和“德克萨斯州”,因为它们被认为是唯一的。 在这种情况下可以采取什么措施来防止这种行为。 如何使用Django和Postgres提供不区分大小写的唯一性 现在,我正在执行以下操作以防止创建不区分大小写的重复项。 class CreateStateForm(forms.ModelForm): def clean_name(self): name = self.cleaned_data['name'] try: State.objects.get(name__iexact=name) except ObjectDoesNotExist: return name raise
  • LINQ-to-SQL中不区分大小写的字符串比较(Case insensitive string compare in LINQ-to-SQL)
    问题 我已经读到,使用ToUpper和ToLower执行不区分大小写的字符串比较是不明智的,但是在LINQ-to-SQL方面,我看不到其他选择。 LINQ-to-SQL会忽略String.Compare的ignoreCase和CompareOptions参数(如果使用区分大小写的数据库,则即使要求进行不区分大小写的比较,也会得到区分大小写的比较)。 ToLower或ToUpper是这里的最佳选择吗? 这个比那个好吗? 我以为我在某处读到ToUpper更好,但是我不知道这在这里是否适用。 (我正在做很多代码审查,每个人都在使用ToLower。) Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0 这将转换为仅将row.Name与“ test”进行比较的SQL查询,并且在区分大小写的数据库上不会返回“ Test”和“ TEST”。 回答1 正如您所说,ToUpper和ToLower之间有一些重要的区别,当您尝试进行不区分大小写的相等性检查时,只有一个是准确的。 理想情况下,进行不区分大小写的相等性检查的最佳方法是: String.Equals(row.Name, "test"
  • 在PHP中比较字符串时忽略大小写(Ignore case sensitivity when comparing strings in PHP)
    问题 我正在尝试比较单词是否相等,并且大小写无关。 但是PHP似乎不同意! 关于如何迫使PHP在比较它们时忽略单词大小写的任何想法? $arr_query_words = ["hat","Cat","sAt","maT"]; for( $j= 0; $j < count($arr_query_words); $j++ ){ $story_body = str_replace( $arr_query_words[ $j ], '<span style=" background-color:yellow; ">' . $arr_query_words[ $j ] . '</span>', $story_body ); } 即使情况不同,是否有办法进行更换? 回答1 使用str_ireplace执行不区分大小写的字符串替换( str_ireplace可从PHP 5获得): $story_body = str_ireplace($arr_query_words[$j], '<span style=" background-color:yellow; ">'. $arr_query_words[$j]. '</span>', $story_body); 要不区分大小写地比较字符串,请使用strcasecmp: <?php $var1 = "Hello"; $var2 = "hello"
  • PHP和大小写敏感(PHP & Case Sensitivity [duplicate])
    问题 这个问题已经在这里有了答案: 为什么PHP中的函数和方法不区分大小写? (2个答案) 1年前关闭。 在PHP中,变量名和常量名区分大小写,而函数名不区分大小写。 据我所知,PHP是发生这种情况的唯一语言。 我使用的所有其他语言要么完全区分大小写,要么完全不区分大小写。 为什么PHP部分区分大小写? 请注意,我并不是在问哪个名称区分大小写,而是为什么。 更新 为了使那些认为我要问哪个的人受益,我想添加以下列表: 区分大小写 弦乐变数对象属性常量,默认情况下 不区分大小写 关键词等功能对象方法常量(如果已相应定义) 类名 笔记: 因此,类是一个混合包: class关键字不区分大小写类名不区分大小写,用于声明,实例化和静态调用作为函数的类方法不区分大小写类属性(变量和常量)区分大小写由于字符串区分大小写,因此依赖字符串的任何内容(例如数组键和值)也区分大小写 回答1 为什么PHP会部分区分大小写? 我只能推测这源于很早的版本,可能是PHP / FI 2.0。 该手册明确指出: 请记住,PHP / FI函数名称不区分大小写。 那时,大多数用户输入(例如GET和POST参数)始终被注册为全局变量。 将它们视为不区分大小写可能会引起问题,因此,据推测,所有变量都被视为区分大小写。 据我所知,这些是PHP / FI 2.0中唯一的标识符。 稍后将介绍所有其他功能
  • MySQL/Oracle 大小写敏感及单双反引号
    MySQL 大小写敏感 ​ 因为近期工作上的要求, 需要对之前代码进行重新排查. 由于开发人员换了一批又一批, 每个人有自己的习惯, 没有形成良好的规范, 例如大小写问题等等, 今日就简单探究一下数据库语言的大小写敏感问题. MySQL ​ 平时写 SQL 语句时, 并没有感觉到大小写的区别, 那么意味着 MySQL 大小写不敏感吗? 答案是否定的. MySQL 在 Windows 下大小写不敏感,但在 Linux 下默认大小写敏感. (说着有点绕口,简言之, 敏感就是区分大小写, 不敏感就是无论大写小写都行) 如何控制大小写敏感 ( 在 my.ini 文件中可修改) MySQL 控制库名、表名大小写敏感的参数是: lower_case_table_names lower_case_file_system ON(不敏感) OFF(敏感) 文件名是否区分大小写(只读不可改), windows不区分, linux区分; lower_case_table_names 0 (敏感) 1(不敏感) 2(不敏感) 参数对应的默认系统 linux windows MAC OS X 0 : 在磁盘中就按照给定的大小写进行存储, 查询时同样按照给定大小写执行SQL 1 : 在磁盘中按照小写存储, 查询时也会将SQL转化为小写再执行 2 : 在磁盘中就按照给定的大小写进行存储
  • SQL Server检查是否区分大小写?(SQL Server check case-sensitivity?)
    问题 如何检查SQL Server中的数据库是否区分大小写? 我以前一直在运行查询: SELECT CASE WHEN 'A' = 'a' THEN 'NOT CASE SENSITIVE' ELSE 'CASE SENSITIVE' END 但是我正在寻找其他方式,因为这实际上在过去给了我很多问题。 编辑-更多信息:现有产品具有许多预写的存储过程。 在存储过程中, @test != @TEST取决于服务器本身的敏感性。 因此,我正在寻找的是检查服务器灵敏度的最佳方法。 回答1 可以在各种级别上设置排序规则: 服务器数据库柱子 因此,您可以在不区分大小写的数据库中包含一个区分大小写的列。 我还没有遇到过可以针对单个数据列的大小写敏感性进行业务案例研究的情况,但是我想可能会这样。 检查服务器排序规则 SELECT SERVERPROPERTY('COLLATION') 检查数据库排序规则 SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation; 检查列排序规则 select table_name, column_name, collation_name from INFORMATION_SCHEMA.COLUMNS where table_name = @table_name 回答2
  • URL是否应区分大小写?(Should URL be case sensitive?)
    问题 我注意到 HTTP://STACKOVERFLOW.COM/QUESTIONS/ASK 和 http://stackoverflow.com/questions/ask 两者都可以正常工作-实际上前一个被转换为小写。 我认为这对用户有意义。 如果我查看Google,那么此URL可以正常工作: http://www.google.com/intl/en/about/corporate/index.html 但是这个带有“ ABOUT”的按钮不起作用: http://www.google.com/intl/en/ABOUT/corporate/index.html URL是否应区分大小写? 回答1 根据W3的“ HTML和URL”,他们应该: 可能存在URL或部分URL,大小写无关紧要,但是识别这些URL可能并不容易。 用户应始终认为URL区分大小写。 回答2 所有“不敏感的”均以粗体显示,以提高可读性。 根据RFC 4343,域名不区分大小写。其余URL通过GET方法发送到服务器。 这是否区分大小写。 以此页面为例,stackoverflow.com接收GET字符串/ questions / 7996919 / should-url-区分大小写,将HTML文档发送到您的浏览器。 Stackoverflow.com不区分大小写,因为它对/ QUEStions / 7996919