本篇文章给大家谈谈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函数)
- 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函数)
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...
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 安装后不能启动,报错如下:请参照本说明第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: "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.plb、owmaggrs.plb、owmaggrb.plb 这三个文件,遂从另外一台标准版的 Oracle 10g 中 Copy 这些文件到这个测试实例。测试发现,执行脚本 owmctab.plb 时遇到下面错误
SQL> @?/rdbms/admin/owmctab.plb
查看了一下脚本,发现 owmctab.plb 还要引用 owmt9012.plb、owmt9013.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
正常情况下,这些文件默认位于 $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(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()函数的相关信息,请在本站查询。
本文标签: