cast 和convert和concat详解以及mysql和sqlserver兼容问题
以下这条仅仅适用于mysql
SELECT {fn CONCAT(CONVERT(user_id,CHAR),USER_NAME)} AS str FROM t_sys_user
以下这条仅仅适用于sqlserver2008
SELECT {fn CONCAT(CONVERT(CHAR,user_id),USER_NAME)} AS str FROM t_sys_user
以下这条sqlserver和mysql兼容
SELECT {fn CONCAT(CAST(user_id AS CHAR),USER_NAME)} AS str FROM t_sys_user
注释:cast是类型转换函数,sqlserver和mysql通用。
convert也是类型转换,在sqlserver2008和mysql中均存在,但是参数顺序相反。
concat函数在sqlserver2008和mysql中均有,但是在sqlserver2008中需要这样适用{fn concat(arg0,arg1,.....)}且不适用与int类型和varchar类型连接。sqlserver2008中字符串连接一般用“+”号。不过在sqlserver2012中好像支持直接使用concat函数。
mysql可以转换成的类型限制:
就是CAST(xxx AS 类型), CONVERT(xxx,类型)。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
以下部分为转载 以上部分为自己总结。
sqlserver
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。
使用 CAST:
expression
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特
** 当转换为 datetime 时输入;当转换为字符数据时输出。
*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。
0(默认值) 最大为 6 位数。根据需要使用科学记数法。
1 始终为 8 位值。始终使用科学记数法。
2 始终为 16 位值。始终使用科学记数法。
在下表中,左列表示从 money 或 smallmoney 转换为字符数据时的 style 值。
0(默认值) 小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98。
1 小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92。
2 小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如 4235.9819。
返回类型
返回与 data type 0 相同的值。
隐性转换指那些没有指定 CAST 或 CONVERT 函数的转换。而显式转换指那些已指定了所需 CAST (CONVERT) 函数的转换。下面的图表显示了所有可用于 SQL Server 系统提供的数据类型的显式和隐性转换,这些数据类型包括 bigint 和 sql_variant。
不存在有关赋值的从 sql_variant 数据类型进行的隐性转换,但是存在转换为 sql_variant 的隐性转换。
nchar E
nvarchar E
money、smallmoney、numeric、decimal、float 或 real char E
varchar E
nchar E
nvarchar E
E 因为结果长度太短无法显示而返回错误。
例如,不要尝试构造 binary 值并将它们转换为数字数据类型分类的数据类型。SQL Server 并不保证 decimal 或 numeric 数据类型转换为 binary 的结果在 SQL Server 各版本间相同。
下面是结果集:
当具有不同小数位数的数据类型进行转换时,值将被截断为最精确的数位。例如,SELECT CAST(10.6496 AS int) 的结果为 10。
当 binary 或 varbinary 数据转换为字符数据并且在 x 后面指定了奇数位的值时,SQL Server 在 x 后面添加 0(零)以成为偶数位值。
A. 同时使用 CAST 和 CONVERT
每个示例都将检索书名(这些图书的截止当前销售额的第一位数字为 3),并将这些图书的 ytd_sales 转换为 char(20)。
下面是任一查询的结果集:
B. 使用带有算术运算符的 CAST
下面的示例通过将总的截止当前销售额 (ytd_sales) 与每本图书的价格 (price) 相除,进行单独列计算 (Copies)。在四舍五入到最接近的整数后,此结果将转换为 int 数据类型。
下面是结果集:
C. 使用 CAST 进行串联
下面的示例使用 CAST 数据类型转换函数来串联非字符、非二进制表达式。
下面是结果集:
D. 使用 CAST 获得更多易读文本
下面的示例在选择列表中使用 CAST 将 title 列转换为 char(50) 列,这样结果将更加易读。
下面是结果集:
E. 使用带有 LIKE 子句的 CAST
下面的示例将 int 列(ytd_sales 列)转换为 char(20) 列,以便使用 LIKE 子句。
下面是结果集:
Mysql:
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:
1
|
CAST (value as type);
|
2
|
CONVERT (value, type);
|
就是CAST(xxx AS 类型), CONVERT(xxx,类型)。
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
下面举几个例子:
例一
1
|
mysql> SELECT CONVERT ( '23' ,SIGNED);
|
2
|
+ ----------------------+
|
3
|
| CONVERT ( '23' ,SIGNED) |
|
4
|
+ ----------------------+
|
5
|
| 23 |
|
6
|
+ ----------------------+
|
7
|
1 row in set
|
例二
1
|
mysql> SELECT CAST ( '125e342.83' AS signed);
|
2
|
+ ------------------------------+
|
3
|
| CAST ( '125e342.83' AS signed) |
|
4
|
+ ------------------------------+
|
5
|
| 125 |
|
6
|
+ ------------------------------+
|
7
|
1 row in set
|
例三
1
|
mysql> SELECT CAST ( '3.35' AS signed);
|
2
|
+ ------------------------+
|
3
|
| CAST ( '3.35' AS signed) |
|
4
|
+ ------------------------+
|
5
|
| 3 |
|
6
|
+ ------------------------+
|
7
|
1 row in set
|
像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。
例4
在SQL Server中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。
01
|
DECLARE @dt datetime
|
02
|
|
03
|
--单纯的日期
|
04
|
SET @dt= '1900-1-2'
|
05
|
SELECT CAST(@dt as binary(8))
|
06
|
--结果: 0x0000000100000000
|
07
|
|
08
|
--单纯的时间
|
09
|
SET @dt= '00:00:01'
|
10
|
SELECT CAST(@dt as binary(8))
|
11
|
--结果: 0x000000000000012C
|
MySQL的类型转换和SQL Server一样,就是类型参数有点点不同:CAST(xxx AS 类型) , CONVERT(xxx,类型)。
cast 和convert和concat详解以及mysql和sqlserver兼容问题相关推荐
- Oracle中CONCAT详解
Oracle中CONCAT详解 1.什么是CONCAT 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写 ...
- mysql8 index255_详解关于MySQL 8.0走过的坑
今天手贱更新了MySQL 8.0 第一个问题:Navicat连接不上数据库 安装的mysql为localhost:3306,配置一切默认,安装后打开Navicat 12 新建连接,直接报错 authe ...
- 详解:MySQL数据库的权限管理和运维实操
详解:MySQL数据库的权限管理 一.MYSQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行updat ...
- 【详解】MySQL中使用正则表达式
[详解]MySQL中使用正则表达式 前言 使用介绍 1.基础匹配 2.二选一(OR)匹配 3.特定一组字符的匹配 4.范围匹配 5.特殊字符匹配 6.字符类匹配 7.多个实例结果匹配 8.使用定位符匹 ...
- Python 数据合并方法 —— Pandas concat() 详解
详解concat 参数说明 concat说明 ignore_index 示例 Example Reference 参数说明 pandas.concat(objs, axis=0, join='oute ...
- mysql如何限制数据修改密码_MySQL_MySQL数据库中修改密码及访问限制设置详解,MySQL是一个真正的多用户、多 - phpStudy...
MySQL数据库中修改密码及访问限制设置详解 MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序 ...
- INF文件详解(32位64位兼容INF)
INF文件格式要求 一个INF文件是以段组织的简单的文本文件.一些段油系统定义(System-Defined)的名称,而另一些段由INF文件的编写者命名.每个段包含特定的条目和命名,这些命名用于引用I ...
- tf.concat()详解
tensorflow中用来拼接张量的函数tf.concat(),用法: tf.concat([tensor1, tensor2, tensor3,...], axis) 先给出tf源代码中的解释: t ...
- mysql concat例子_MYSQL中CONCAT详解
concat()函数 1. 功能: 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 2. 语法 concat(str1, str2,...) 3. 例子 案例一: ...
最新文章
- 【Markdown】如何在微信公众号上写markdown的文章
- 数据丢失如当头棒喝,数据备份重如山!
- mysql:视图,触发器,事务,存储过程,函数
- Delphi Form Designer (窗体设计器)之二
- Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
- 快上车,带你了解HiLens Studio六大优势
- 如果财富都在部分人手里会怎样?
- 【转】Java 8十个lambda表达式案例
- 3: 组件间的依赖管理(纯汉语版)
- ffmpeg支持的扩展库有哪些
- 交叉编译opencv:undefined reference to `png_riffle_palette_neon
- 正解:《Java 程序员的黄金 5 年》看完我才知道当时有多蠢
- 微信小程序实现仿美团外卖饿了么左右联动页面
- 将excel转为图片
- ppm11521*5761
- Samba服务器的配置全过程
- mywife.cc 神一样的存在!
- springboot启动报org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean..
- 华为云主机装oracle,hwcloud-通过华为云镜像服务创建ECS-镜像服务介绍与安装Redhat6.8...
- 怎样将计算机硬盘的资料彻底删除吗,3种技巧|如何从USB永久删除/清除文件
热门文章
- 什么是幂等,什么情况下需要幂等,如何实现幂等
- JAVA基础之类和对象
- 互联网发展简史(1)ARPANET的建立
- 级联引用完整性约束ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
- java自动装配_Spring中自动装配的4种方式
- w3wp ash oracle,Oracle session简介
- trackingmore快递查询平台_快递查询API接口(trackingmore)
- 谷歌浏览器安装vue-devtools插件
- 文件管理之文件的逻辑结构
- 你对人工智能有什么看法?未来趋势与产品化将会如何发展?