首页 > 其他分享 >GBase 8c配置大小写敏感

GBase 8c配置大小写敏感

时间:2024-04-03 14:48:10浏览次数:23  
标签:name 8c id 大小写 utf8 test table GBase

GBase 8c配置大小写敏感

GBase8c数据库mysql/sql server兼容大小写敏感

1、对象名(表名、列名等)支持大小些敏感
2、数据查询支持大小写模糊查询


1、列名支持大小写敏感

为满足8c兼容mysql和sql server,支持默认列名的大小写。
首先需要创建兼容B模式的数据库。

--创建数据库
CREATE DATABASE test DBCOMPATIBILITY 'B' encoding 'UTF-8' LC_COLLATE 'zh_CN.utf8' LC_CTYPE 'zh_CN.utf8';
--创建表
test=# create table t1(Name varchar(10),iD int);
CREATE TABLE
test=# \d+ t1
                                 Table "public.t1"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 Name   | character varying(10) |           | extended |              |
 iD     | integer               |           | plain    |              |
Has OIDs: no
Options: orientation=row, compression=no

test=# select column_name from information_schema.columns where table_name='t1';
 column_name
-------------
 iD
 Name
(2 rows)

test=# select id from t1;
 id
----
(0 rows)

test=# insert into t1(name,ID) values ('Test',1);
INSERT 0 1
test=# update t1 set name='new_test' where Id=1;
UPDATE 1
test=# select * from t1;
   Name   | iD
----------+----
 new_test |  1
(1 row)

上面例子可以看出,在创建表时,可以指定列名的大小写,增删改查会忽略大小写,且在场景中满足mysql与sql server的兼容。

2、表名支持大小写敏感

默认情况下,8c数据中大小写时不敏感的,如果非要强制大小写,有两种方法进行操作。
第一种:需要添加"",例如:

test=# create table "T2" ( id int,Name varchar(10));
CREATE TABLE
test=# \d+
                                                  List of relations
 Schema |             Name              | Type  | Owner |    Size    |             Storage              | Description
--------+-------------------------------+-------+-------+------------+----------------------------------+-------------
 public | T2                            | table | gbase | 0 bytes    | {orientation=row,compression=no} |
 public | index_statistic               | view  | gbase | 0 bytes    |                                  |
 public | pg_type_nonstrict_basic_value | view  | gbase | 0 bytes    |                                  |
 public | t1                            | table | gbase | 8192 bytes | {orientation=row,compression=no} |
(4 rows)

test=# \d+ t2
Did not find any relation named "t2".
test=# \d+ "T2"
                                 Table "public.T2"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 id     | integer               |           | plain    |              |
 Name   | character varying(10) |           | extended |              |
Has OIDs: no
Options: orientation=row, compression=no

这种增加" "虽然满足强制大小写,但是在调用和操作过程中仍需要添加双引号。
第二种:使用参数(dolphin.lower_case_table_names)进行调整。

test=# alter database test set dolphin.lower_case_table_names to 0;
ALTER DATABASE
test=# \q      --alter database 当前session需要重新进入后生效
[gbase@gbase8c ~]$ gsql -r test -p 15400
test=# show dolphin.lower_case_table_names;
 dolphin.lower_case_table_names
--------------------------------
 0
(1 row)

test=# create table T3(id int,NAme varchar(10));
CREATE TABLE
test=# \d+ T3
                                 Table "public.T3"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 id     | integer               |           | plain    |              |
 NAme   | character varying(10) |           | extended |              |
Has OIDs: no
Options: orientation=row, compression=no

test=# select * from T3;
 id | NAme
----+------
(0 rows)

test=# select * from t3;
ERROR:  relation "t3" does not exist on dn_6001_6002
LINE 1: select * from t3;
                      ^

以上满足对表的大小写敏感。

3、数据支持大小写不敏感

在mysql和sql server支持对数据的大小写不敏感。

mysql> create table t4(id int,name varchar(100)) COLLATE utf8_general_ci;
Query OK, 0 rows affected, 1 warning (0.61 sec)

mysql> insert into t4 values(1,'ABC'),(2,'ABc'),(3,'abc');
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from t4 where name='abc';
+------+------+
| id   | name |
+------+------+
|    1 | ABC  |
|    2 | ABc  |
|    3 | abc  |
+------+------+
3 rows in set (0.01 sec)

mysql>

在mysql种存在着很多的utf8编码格式,每种编码都有不同的区别,比如utf8_general_ci编码就是大小写不敏感,对查询不区分大小写。在GBase8c最新的5.0.0版本已经兼容了utf8_general_ci编码。看下面例子:

test=# select * from pg_collation where collcollate='utf8_general_ci';
    collname     | collnamespace | collowner | collencoding |   collcollate   |    collctype    | collpadattr | collisdef
-----------------+---------------+-----------+--------------+-----------------+-----------------+-------------+-----------
 utf8_general_ci |            11 |        10 |            7 | utf8_general_ci | utf8_general_ci | PAD SPACE   |
(1 row)

test=# create table t4(id int,name varchar(100)) COLLATE utf8_general_ci;
CREATE TABLE
test=# insert into t4 values(1,'ABC'),(2,'ABc'),(3,'abc');
INSERT 0 3
test=# select * from t4 where name='abc';
 id | name
----+------
  1 | ABC
  2 | ABc
  3 | abc
(3 rows)

test=# select * from t4 where name='ABC';
 id | name
----+------
  1 | ABC
  2 | ABc
  3 | abc
(3 rows)

4、注意:

1、以上功能支持5.0.0以上版本;
2、创建的数据库编码为UTF8;
3、exclude_reserved_words不设置。

标签:name,8c,id,大小写,utf8,test,table,GBase
From: https://www.cnblogs.com/balon/p/18112655

相关文章

  • Gbase8s数据库保姆级安装部署(RHAC和SSC) 三
    一、RHAC集群的安装部署(一)RHAC集群的介绍和环境检查1.RHAC和HAC集群的比较    RHAC集群是gbase8s数据库双机同步的一种方式,其和HAC集群在安装部署上的步骤大部分是相同的(环境准备、软件安装、实例初始化、数据同步),而且其和HAC集群的同步方式也是一样的,只有在主机和......
  • linux 中 vim编辑器设置忽略大小写查找
     001、测试数据[root@pc1test01]#lsa.txt[root@pc1test01]#cata.txteerootkkaaeedddeeROOTkkeeddRoot 002、方法1vim打开查找文件,在查找内容的后边增加\c,如果不在末尾增加\c,则表示的是不忽略大小写比如针对root忽略大小写查找:eerootkkaae......
  • Install astah-professional (9.2.0.0248cd.0) to Ubuntu 23.10
    Unpackingastah-professional(9.2.0.0248cd.0)...Settingupastah-professional(9.2.0.0248cd.0)...PleaseinstallAdoptiumTemurin8u402orlater.HoweverJDK9orlatercannotbeaccepted.Andthentrythefollowingcommandforrunningastah*profession......
  • C++ //练习 11.4 扩展你的程序,忽略大小写和标点。例如,“example.“、“exmaple,“和”
    C++Primer(第5版)练习11.4练习11.4扩展你的程序,忽略大小写和标点。例如,“example.”、"exmaple,"和”Example"应该递增相同的计数器。环境:LinuxUbuntu(云服务器)工具:vim 代码块/************************************************************************* >Fil......
  • KingbaseV8 数据库迁移
    1、打开数据迁移工具启动迁移系统路径:安装位置+\KESRealPro\V008R006C006B0021\ClientTools\guitools\KDts\KDTS-WEB\bin3、访问到KingbaseDTS数据库迁移工具http://localhost:8080默认账号密码如下:账号:admin密码:123456&*4、登录成功,进入概览页面5、创建源数据......
  • 学习-Java顺序结构之字符变换之大小写字母转换
    任务描述本关任务:将键盘输入的大写字母转化为小写字母。相关知识为了完成本关任务,你需要掌握:字符型变量和常量;字符型数据的加减运算;字符型数据的输入/输出。字符型变量和常量在之前我们学习了整型和浮点型的变量和常量,接下来介绍字符型的变量和常量。首先我们要先了解......
  • gbase8s数据表级别的同步(部分数据的下发等功能)一
    一、ER的部署(一)环境检查1.操作系统环境检查虚拟机是centos进行虚拟出来的测试机[root@node01install]#uname-aLinuxnode013.10.0-1160.71.1.el7.x86_64#1SMPTueJun2815:37:28UTC2022x86_64x86_64x86_64GNU/Linux2.数据库部署信息检查服务器名称服......
  • Gbase8s数据库保姆级安装部署 一
       一、单机安装部署(一)安装之前的环境检查和准备(本次安装以官网最新版本3.5.1为例)1.检查环境和操作系统和安装包是否匹配gbase8s数据库一般以是以CPU架构为主要区分点,主要分为x86架构和arm架构两种:X86:Intel(centos)、兆芯和海光arm:鲲鹏和飞腾--检查操作系统--本次操......
  • KingbaseES数据库运维案例---SCOTT用户及对象创建
    案例说明:生产用户从Oracle环境迁移到KingbaseES数据库后,需要使用Oracle下scott用户的应用测试环境,本案例借助Oracle创建scott用户应用环境的脚本,创建KingbaseES下的应用测试环境。适用版本:KingbaseESV8R3/R6SCOTT用户有四张数据表:1)部门信息表:dept2)雇员信息表:emp3)工资等......
  • KingbaseES V8R6集群运维案例之---single-pro模式备份
    案例说明:KingbaseESV8R6集群物理备份配置参数_target_db_style,可选single或cluster或single-pro。single对应单机模式的目标数据库实例,cluster对应集群模式的目标数据库实例,single-pro对应集群模式的每个DB节点独立备份。本案例详细描述集群架构在singl-pro模式下的备份。适用......