标签: case-sensitive

如何在 WHERE 子句中进行区分大小写的搜索?

我想在 SQL 查询中进行区分大小写的搜索。但默认情况下,MySQL 不考虑字符串的情况。

关于如何在 SQL 查询中进行区分大小写的搜索的任何想法?

mysql select case-sensitive

24
推荐指数
3
解决办法
11万
查看次数

为什么在带有越南语_CI_AI 排序规则的 SQL Server 上,'tr' 和 'tR' 之间的比较会失败?

越南语校对中的“tR”似乎有一些特别之处。知道的人能不能用简单的语言解释一下,不胜感激。此问题是在“越南语”整理的 SQL Server 上安装我们的产品期间发现的。模式中的一个表的名称中包含“tR”,但存储过程正在以所有小写的“tr”引用该表。而这个参考失败了。

我想这种情况类似于“?” 匹配其他排序规则中的“ss”。

这是一个复制品:

select  case when 'tr' = 'tR' COLLATE SQL_Latin1_General_CP1_CI_AS   then 'match' else 'no match' end 
select  case when 'tr' = 'tR' COLLATE Vietnamese_CI_AI   then 'match' else 'no match' end 
select  case when 'tr' = 'TR' COLLATE Vietnamese_CI_AI   then 'match' else 'no match' end 
Run Code Online (Sandbox Code Playgroud)

结果:

-----
match


--------
no match


-----
match
Run Code Online (Sandbox Code Playgroud)

第二个 T-SQL 产生不匹配。't' 和 'R' 的其他组合则不然。

sql-server collation unicode localization case-sensitive

14
推荐指数
1
解决办法
1032
查看次数

PostgreSQL 可以创建区分大小写的数据库吗?

我正在将一些代码从某些版本的 Sybase 移植到 PostgreSQL。这是一个使用 Sybase 客户端库的 C 应用程序。我的方法是编写一个翻译层,将调用转换dbsqlexec()PQexec()(例如)。那部分主要是工作。

看来 Sybase 数据库是以区分大小写的方式设置的(关于数据库对象名称)。例如,既有WIDGET桌子又有widget桌子。看起来这个应用程序中的约定是全大写名称表示实际数据表,而小写名称在运行某些处理时用作临时表。

根据4.1 Lexical Structure,“关键字和未加引号的标识符不区分大小写。 ”我知道我可以双引号标识符来禁用自动折叠为小写,但我不想通过无数行手动执行此操作使用此数据库的代码。

有没有办法设置 PostgreSQL 来禁用数据库对象标识符的这种自动大小写折叠?

我的替代方法是编写一些代码来检查每个 SQL 语句并在每个标识符(不是关键字)周围加上双引号。

postgresql case-sensitive

10
推荐指数
1
解决办法
6261
查看次数

如何使用数组作为 PostgreSQL 中 VARIADIC 函数的参数?

我正在尝试json_extract_path_text()使用citext模块制作不区分大小写的版本。

我希望这是一个围绕内置函数的简单包装器,唯一的区别是它接受citext作为第一个参数而不是json. 我希望这是对本机实现的直接传递,只需事先进行类型转换。这是我到目前为止所拥有的:

create extension citext;

create or replace function json_extract_path_text ( string citext, variadic params text[]) RETURNS text IMMUTABLE AS
$$
    BEGIN
        SELECT json_extract_path_text(string::json, params);
    END;
$$
LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

但是,由于类型不匹配,这不能正常工作:

ERROR:  function json_extract_path_text(json, text[]) does not exist
LINE 1: SELECT json_extract_path_text(string::json, params)
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  SELECT json_extract_path_text(string::json, params)
CONTEXT:  PL/pgSQL function json_extract_path_text(citext,text[]) line 3 …
Run Code Online (Sandbox Code Playgroud)

postgresql parameter functions array case-sensitive

10
推荐指数
1
解决办法
6472
查看次数

LIKE 不支持 PostgreSQL 不确定性排序规则

我正在使用 Postgresql v12。我创建了一个像这样的排序规则:

CREATE COLLATION ci (provider = icu, locale = 'tr_TR', deterministic = false);
Run Code Online (Sandbox Code Playgroud)

我在表中使用了该排序规则:

create table testtable1 (
    id serial  primary key,
    name text  COLLATE "ci"
);
Run Code Online (Sandbox Code Playgroud)

我插入了示例数据:

insert into testtable1 values(3,'abc');
Run Code Online (Sandbox Code Playgroud)

当我使用 查询该表时LIKE,它返回以下错误:

select name from testtable1 WHERE name LIKE '%a%'  
Run Code Online (Sandbox Code Playgroud)


错误:LIKE SQL 状态不支持非确定性排序规则:0A000

但我需要使用LIKE. 有什么办法允许这样做吗?

collation unicode case-sensitive international-components-unicode postgresql-12

10
推荐指数
1
解决办法
1万
查看次数

CMS 服务器列表中区分大小写的排序

我必须相信这是有原因的,但对于我的生活,我无法弄清楚。看起来任何中央管理服务器中服务器名称的排序都是区分大小写的,而不管充当 CMS 的服务器本身的排序规则如何。

附件是我的本地机器上托管的 CMS 示例,它配置了 SQL_Latin1_General_CP1_CI_AS 的服务器排序规则。CI 意思是不区分大小写。从包含 CMS 对象的系统表中进行选择时,将返回正确的顺序,但是正如您在此屏幕截图中所见,服务器在 UI 中的列出方式,顺序显然是以区分大小写的方式处理的。

在此处输入图片说明

由于它似乎与服务器级别无关,因此我假设它与客户端工具相关,但在工具中没有任何地方可以识别会影响此的排序规则级别(甚至区分大小写设置)。

显然,这个问题没有什么重要的,但是如果有人确实知道如何强制用户界面不区分大小写,我会很感激,因为我喜欢将我的服务器名称命名为 Camel Case,这会影响排序。

sql-server central-management-server case-sensitive

8
推荐指数
1
解决办法
143
查看次数

不区分大小写的排序规则仍然比较区分大小写

目前我正在试图创建一个表,一个文本列将比较案例默认情况下是敏感的。这是因为我们有一个第三方程序可以对我们的数据库执行搜索。该SELECT程序使用的语句不能更改。

抽象的问题是我们不知何故需要这个搜索不区分大小写,但它目前是区分大小写的。

我读到 Postgres 12 确实支持允许这种行为的非确定性排序规则。

我在德国 Windows 机器上安装了 Postgres 服务器(版本 PostgreSQL 12.1,由 Visual C++ build 1914 编译,64 位)。

因此,出于测试目的,我创建了一个新数据库进行测试:

CREATE DATABASE collation_test
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

在这个数据库中,我创建了以下排序规则,我在一篇关于这些排序规则的文章中找到

CREATE COLLATION collat_ci (
  provider = 'icu',
  locale = 'und-u-ks-level2',
  deterministic = false
);
Run Code Online (Sandbox Code Playgroud)

在此之后,我需要一个表来测试这个排序规则

CREATE TABLE public.person
(
    "Id" bigint NOT NULL,
    "Name" text COLLATE public.collat_ci,
    PRIMARY KEY ("Id")
);

ALTER TABLE public.person
    OWNER to postgres;

INSERT …
Run Code Online (Sandbox Code Playgroud)

postgresql collation case-sensitive postgresql-12

8
推荐指数
1
解决办法
1958
查看次数

Linux 上的 MySQL 区分大小写的表名

将 MySQL 数据库从 Windows 迁移到 Linux 我有一个问题,即在 Linux 上表的名称区分大小写。这是一个问题,因为我正在开发的 Java 应用程序找不到表。

我已经更改了我的/etc/mysql/my.cnf文件添加行:

lower_case_table_names=1

但这并没有改变任何事情。

我的服务器版本是: 5.1.61-0ubuntu0.11.10.1 (Ubuntu)

如何配置 MySQL 以忽略表名中的大小写?

mysql mysql-5 linux mysql-5.1 case-sensitive

6
推荐指数
1
解决办法
3万
查看次数

PostgreSQL 强制所有数据大写

有没有办法强制所有文本数据为大写,而不必重复为每个表编写函数或在客户端执行?

postgresql postgresql-9.4 case-sensitive

6
推荐指数
1
解决办法
1万
查看次数

pg_dump:找不到匹配的模式

我正在尝试从 Postgres 9.4 转储模式,在 Cents 6.5 上运行,但出现错误:

pg_dump:找不到匹配的模式

这是我正在运行的命令:

pg_dump -U postgres -n "OLD-TODELETE-bushes" --verbose site > output_nf
Run Code Online (Sandbox Code Playgroud)

我对此有点困惑,因为当我运行时select schema_name from information_schema.schemata,我可以看到架构名称。

如果我为所有模式运行 pg_dump,则按OLD-TODELETE-bushes预期将其转储到文件中。

Postgres 日志中没有错误。

谁有想法?

postgresql pg-dump postgresql-9.4 case-sensitive

6
推荐指数
1
解决办法
3349
查看次数