GVKun编程网logo

oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法(oracle中wm_concat函数)

9

本篇文章给大家谈谈oracle函数WMSYS.WM_CONCAT的用法与mysql函数GROUP_CONCAT的用法,以及oracle中wm_concat函数的知识点,同时本文还将给你拓展mysql启

本篇文章给大家谈谈oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法,以及oracle中wm_concat函数的知识点,同时本文还将给你拓展mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...、mysql 安装避坑指南 ,mysql 安装后不能启动, mysql 指定版本安装,mysql 5.7.39版本安装,mysql 5.7.36版本安装、ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier、Oracle - 拼接多个字段 - wm_concat()函数等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法(oracle中wm_concat函数)

oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法(oracle中wm_concat函数)

1、Oracle函数 WMSYS.WM_CONCAT的使用

如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可。

查询语句需要配合使用group by

select aa,wmsys.wm_concat(t1.name) from (
select t.name,to_char(t.createdate,'yyyy-mm-dd') aa from td_user t where t.td_conference_id = 3218 and t.status = 1 and t.createdate > to_date('2012-10-28','yyyy-mm-dd') order by createdate desc
) t1 group by t1.aa

图1:

图2:


2、MySQL 函数 GROUP_CONCAT 的使用

GROUP_CONCAT()是MysqL数据库提供的一个函数,通常跟GROUPBY一起用,具体可参考MysqL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat。

完整的语法如下:

group_concat([disTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

基本查询
MysqL> select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔(默认)
MysqL> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,分号分隔
MysqL> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
+------+----------------------------------+
3 rows in set (0.00 sec)

以id分组,把去冗余的name字段的值打印在一行,
逗号分隔

MysqL> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
MysqL> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,10 |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)


需要注意的:

a.int字段的连接陷阱 当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来, 否则在你执行后(ExecuteScalar或者其它任何执行sql返回结果的方法)返回的将不是一个逗号隔开的串, 而是byte[]。 该问题当你在sqlyog等一些工具中是体现不出来的,所以很难发现。 select group_concat(ipaddress) from t_ip返回逗号隔开的串 select group_concat(id) from t_ip 返回byte[] select group_concat(CAST(id as char)) from t_dep返回逗号隔开的串 select group_concat(Convert(id,char)) from t_dep返回逗号隔开的串 附Cast,convert的用法: CAST(expr AS type),CONVERT(expr,type),CONVERT(expr USINGtranscoding_name) CAST() 和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。 这个类型 可以是以下值其中的 一个: BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEGER] TIME UNSIGNED [INTEGER] b.长度陷阱 用了group_concat后,select里如果使用了limit是不起作用的. 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。 使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val是一个无符号整数: SET [SESSION | GLOBAL] group_concat_max_len = val; 若已经设置了最大长度,则结果被截至这个最大长度。 在sqlyog中执行 SET GLOBAL group_concat_max_len = 10后,重新打开sqlyog,设置就会生效。

mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...

mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...

1:首先mysql本地连接报错:

  Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.sock''(111)

  解决:

    1:删除 文件:/data/mysql/mysql/mysql.sock

  此时又会报错:Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock'' (2)

  进入到目录:/data/mysql2/bin/

    使用命令:mysqld start

    此时报错:[ERROR] Too many arguments (first extra is ''start'')

    于是将命令修改:mysqld --user=mysql

感谢:

  https://www.cnblogs.com/invban/p/5824796.html

  https://blog.csdn.net/u010416101/article/details/80490536

 

 

 

 

2:19年7月4日,mysql不是自己安装的,也不晓得是怎么安装的.在启动时依然报这个错误,按照前面的方法还是解决不了.

然后我又使用如下命令,启动依然报错

./mysqld --defaults-file=/data/mysql/mysql01/my.cnf --basedir=/data/mysql/mysql01 --datadir=/data/mysql/mysql01/data  --user=zabbix

  

 

mysql 安装避坑指南 ,mysql 安装后不能启动, mysql 指定版本安装,mysql 5.7.39版本安装,mysql 5.7.36版本安装

mysql 安装避坑指南 ,mysql 安装后不能启动, mysql 指定版本安装,mysql 5.7.39版本安装,mysql 5.7.36版本安装

MysqL 安装后不能启动,报错如下:请参照本说明第7条的办法解决。
MysqLd.service: Control process exited, code=exited status=1
Please read “Security” section of the manual to find out how to run MysqLd as root

如果MysqL安装遇到了错误如下:请参照第5条的办法解决。
All matches were filtered out by modular filtering for argument: MysqL-community-server
Error: Unable to find a match: MysqL-community-server
具体⽇志错误日志文件:在MysqL 配置⽂件 /etc/my.cnf 中有设置。
log-error=/var/log/MysqLd.log
pid-file=/var/run/MysqLd/MysqLd.pid



1.检查CentOS是否有系统自带的MysqL

yum list installed | grep MysqL

2.如果存在系统自带的MysqL及依赖,则通过 yum remove 将其卸载
卸载后记得执行以下命令删除数据库文件,(删除数据库前请自己确认是否有重要数据库文件!)

 rm -rf /var/lib/MysqL  #这个是centos下的数据库文件位置


3.CentOS中下载rpm包,并安装本地MysqL源

下载rpm包:yum localinstall MysqL80-community-release-el7-3.noarch.rpm

通过 yum localinstall 安装MysqL源,可以帮助我们解决本地rpm包的依赖问题。

最后,验证是否安装成功:yum repolist all | grep MysqL
wget https://dev.MysqL.com/get/MysqL80-community-release-el7-3.noarch.rpm
rpm -ivh MysqL80-community-release-el7-3.noarch.rpm
 yum repolist all | grep MysqL
4.修改默认安装版本为5.7

从上面的图片,我们可以看到,默认是MysqL 8.0可用,我们若想安装MysqL 5.7,则需启用5.7。接下来通过直接修改配置文件来设置启用。

vim /etc/yum.repos.d/MysqL-community.repo

输入上面的命令,在编辑界面,先输入 i 进入编辑模式,将8.0的 enabled 设置为0,将5.7的 enabled 设置为1

5.安装

yum install -y MysqL-community-server

如果遇到了错误
All matches were filtered out by modular filtering for argument: MysqL-community-server
Error: Unable to find a match: MysqL-community-server

解决方法

sudo yum module disable MysqL

重复 yum install -y MysqL-community-server

6.遇到了错误

Public key for MysqL-community-client-5.7.38-1.el7.x86_64.rpm is not installed. Failing package is: MysqL-community-client-5.7.38-1.el7.x86_64

解决方法

sudo rpm --import https://repo.MysqL.com/RPM-GPG-KEY-MysqL-2022
或者这样,我是这样解决的:
yum install MysqL-community-server --nogpgcheck



检查

sudo systemctl status MysqLd

7.启动

sudo systemctl start MysqLd
如果无法启动,可能是以前安装其他版本MysqL有文件残留
先卸载MysqL
yum remove MysqL
 yum -y remove MysqL*
然后删除: rm -rf /var/lib/MysqL          #删除数据库前请自己确认是否有重要数据库文件!
重新运行安装命令:
yum install MysqL-community-server --nogpgcheck
service MysqLd start
再次启动服务成功!

8.查看临时密码

sudo grep 'temporary password' /var/log/MysqLd.log

9.更改密码
MysqL> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

10.配置
MysqL_secure_installation


ps.直接安装最新版:
sudo dnf -y install @MysqL
登录 创建root管理员和密码
    MysqLadmin -u root password 123456
    登录: MysqL -u root -p输入密码即可。
    忘记密码
    service MysqLd stop;
    MysqLd_safe --user=root --skip-grant-tables;
    这一步骤执行的时候不会出现新的命令行,你需要重新打开一个窗口执行下面的命令
    MysqL -u root;
    use MysqL ;
    update user set password=password("123456") where user="root";
    flush privileges;
远程访问 开放防火墙的端口号MysqL
    增加权限:MysqL库中的user表新增一条记录Host为“%”,User为“root”。
    
一般开发测试直接把防火墙关闭
su  root
service iptables stop  #关闭防火墙
service iptables status  #验证是否关闭
chkconfig iptables off  #关闭防火墙的开机自动运行
chkconfig –list |  grep  iptables  #验证防火墙的开机自动运行
vim  /etc/sysconfig/selinux  # 禁用selinux,将SELINUX=disabled

授权用户可以从远程登陆
    grant all PRIVILEGES on *.* to root@'%'  identified by '123456替换自己的密码';
    flush privileges ;



ORA-00904:

ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier

 

同事玩 Docker,在 Docker 里面启了一个 Oracle 10g Express 版本,在测试过程中遇到了 ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier 错误。

 

 

SQL> select * from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

 

 

我去处理的时候,发现 Oracle 10g Express 版本的 $ORACLE_HOME/rdbms/admin 目录下面根本没有 owmctab.plbowmaggrs.plbowmaggrb.plb 这三个文件,遂从另外一台标准版的 Oracle 10g Copy 这些文件到这个测试实例。测试发现,执行脚本 owmctab.plb 时遇到下面错误

 

SQL> @?/rdbms/admin/owmctab.plb

 

 

 

clip_image001

 

 

查看了一下脚本,发现 owmctab.plb 还要引用 owmt9012.plbowmt9013.plb 文件,所以,如果 $ORACLE_HOME/rdbms/admin 目录下面如果没有这些文件的话,需要的是 5 个文件。

 

 

$ ls -lrt owm*
-rw-rw-r--. 1 oracle dba 14889 Feb  2  2008 owmctab.plb
-rw-rw-r--. 1 oracle dba  1280 Feb  2  2008 owmt9013.plb
-rw-rw-r--. 1 oracle dba  4000 Feb  2  2008 owmt9012.plb
-rw-rw-r--. 1 oracle dba  1168 Feb  2  2008 owmaggrs.plb
-rw-rw-r--. 1 oracle dba   627 Feb  2  2008 owmaggrb.plb

 

 

 

clip_image002

 

 

正常情况下,这些文件默认位于 $ORACLE_HOME/rdbms/admin 下面,只需执行下面脚本创建对象即可。在 Oracle 10g Express 版本中 copy 上面 5 个文件后,执行下面脚本也能解决问题。

 

 

SQL> @?/rdbms/admin/owmctab.plb
SQL> @?/rdbms/admin/owmaggrs.plb
SQL> @?/rdbms/admin/owmaggrb.plb

Oracle - 拼接多个字段 - wm_concat()函数

Oracle - 拼接多个字段 - wm_concat()函数

Oracle wm_concat()函数
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并
如:
shopping:
-----------------------------------------

u_id goods num

------------------------------------------

1 苹果 2

2 梨子 5

1 西瓜 4

3 葡萄 1

3 香蕉 1

1 橘子 3
======================
SQL:select u_id, wmsys.wm_concat(goods) goods_sum from shopping group by u_id
结果为:
--------------------------------

u_id goods_sum

____________________

1 苹果,西瓜,橘子

2 梨子

3 葡萄,香蕉

---------------------------------

SQL:select u_id, wmsys.wm_concat(goods || ''('' || num || ''斤)'' ) goods_sum from shopping group by u_id
结果:
--------------------------------

u_id goods_sum

____________________

1 苹果(2斤),西瓜(4斤),橘子(3斤)

2 梨子(5斤)

3 葡萄(1斤),香蕉(1斤)

---------------------------------

我们今天的关于oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法oracle中wm_concat函数的分享已经告一段落,感谢您的关注,如果您想了解更多关于mysql 启动报错Can''t connect to local MySQL server through socket ''/data/mysql/mysql/mysql.soc...、mysql 安装避坑指南 ,mysql 安装后不能启动, mysql 指定版本安装,mysql 5.7.39版本安装,mysql 5.7.36版本安装、ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier、Oracle - 拼接多个字段 - wm_concat()函数的相关信息,请在本站查询。

本文标签: