MySQL XML语法中,如何精确获取并保留指定位小数的值?

2026-05-22 11:241阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1054个文字,预计阅读时间需要5分钟。

MySQL XML语法中,如何精确获取并保留指定位小数的值?

函数 `TRUNCATE(X, D)` 用于返回 X 截断到小数点后 D 位的值。

- 当 D 为 0 时,小数点后的所有数字被去除。- 当 D 为负数时,截断到小数点后 D 位之前的整数部分。

示例:sqlSELECT TRUNCATE(7.536432, 2);

TRUNCATE(X,D)

此函数用于返回X的截断到小数位D号的值。 如果D为0,则小数点被除去。如果D是负的,那么D的值的整数部分值的数量被截断。考虑下面的例子:

SQL>SELECT TRUNCATE(7.536432,2); +---------------------------------------------------------+ | TRUNCATE(7.536432,2) | +---------------------------------------------------------+ | 7.53 | +---------------------------------------------------------+ 1 row in set (0.00 sec)

case when ... then ...

case when d.generating_capacity >= 0 and d.generating_capacity &lt;= 10 then 10 when d.generating_capacity > 10 and d.generating_capacity &lt;= 20 then 20 when d.generating_capacity > 20 and d.generating_capacity &lt;= 30 then 30 when d.generating_capacity > 30 and d.generating_capacity &lt;= 40 then 40 when d.generating_capacity > 40 and d.generating_capacity &lt;= 50 then 50 when d.generating_capacity > 50 and d.generating_capacity &lt;= 60 then 60 when d.generating_capacity > 60 and d.generating_capacity &lt;= 70 then 70 when d.generating_capacity > 70 and d.generating_capacity &lt;= 80 then 80 when d.generating_capacity > 80 and d.generating_capacity &lt;= 90 then 90 when d.generating_capacity > 90 and d.generating_capacity &lt;= 100 then 100 <!-- when d.generating_capacity > 100 then 11 --> end as byGroup

注意 <= 需要用&lt;= 代替

LENGTH(str)

返回字符串str的长度,以字节为单位。 一个多字节字符算作多字节。这意味着,对于包含五个二字节字符,length()返回10,而CHAR_LENGTH()返回5。

SQL> SELECT LENGTH('text'); +---------------------------------------------------------+ | LENGTH('text') | +---------------------------------------------------------+ | 4 | +---------------------------------------------------------+ 1 row in set (0.00 sec)

concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

company like concat('%', #{powerStation}, '%')

UNION——操作符用于合并两个或多个 SELECT 语句的结果集。(注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。)

UNION 语法

SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2

UNION 操作符选取不同的值。如果允许有重复的值,请使用 UNION ALL

2.UNION ALL 语法:会列出所有重复的值。

SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。


<where>

<select id="selectIfCondition" resultType="com.heiketu.testpackage.pojo.Product"> SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDesc FROM Products <where> <if test="prodId != null and prodId != ''"> AND prod_id = #{prodId} </if> <if test="prodName != null and prodName != ''"> AND prod_name = #{prodName} </if> </where></select>


映射文件中的where标签可以过滤掉条件语句中的第一个andor关键字。以上SQL当prodId!=null时会被mybatis的where标签去除掉多余的and关键字,生成的sql如下:

SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDescFROM ProductsWHERE prod_id = ?AND prod_name = ?

<if>

在mybatis的xml文件中编写sql语句有时候需要判断是否为空或者判断某些值的情况,

<if test="pbycgkQuery.cityCode != null and pbycgkQuery.cityCode != ''"> and city_code = #{pbycgkQuery.cityCode} </if>

<foreach>

foreach 也就是遍历迭代,在SQL中通常用在 in 这个关键词的后面

foreach元素的属性主要有 item,index,collection,open,separator,close。

MySQL XML语法中,如何精确获取并保留指定位小数的值?

分别代表:

item表示集合中每一个元素进行迭代时的别名,

index用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔 符,

close表示以什么结束

基础用法一:

<select id="selectByIds" resultType="com.txw.pojo.User"> select * from user where id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select>

基础用法二:

select schedule_scope_name label, sum(generating_capacity) value from distribsun_station_list <where> <foreach collection="countys" index="index" item="county" open="(" separator="or" close=")"> schedule_scope_name LIKE CONCAT('%', #{county}, '%') <if test="endTime != null and endTime != ''"> and accept_time &lt; #{endTime} </if> </foreach> </where> GROUP BY schedule_scope_name

插入用法:

insert into green_power_intensity_carbon_data ( time, data ) values <foreach collection="list" item="greenPowerIntensityCarbonDataPO" index="index" separator=","> ( #{greenPowerIntensityCarbonDataPO.time}, #{greenPowerIntensityCarbonDataPO.data} ) </foreach>

本文共计1054个文字,预计阅读时间需要5分钟。

MySQL XML语法中,如何精确获取并保留指定位小数的值?

函数 `TRUNCATE(X, D)` 用于返回 X 截断到小数点后 D 位的值。

- 当 D 为 0 时,小数点后的所有数字被去除。- 当 D 为负数时,截断到小数点后 D 位之前的整数部分。

示例:sqlSELECT TRUNCATE(7.536432, 2);

TRUNCATE(X,D)

此函数用于返回X的截断到小数位D号的值。 如果D为0,则小数点被除去。如果D是负的,那么D的值的整数部分值的数量被截断。考虑下面的例子:

SQL>SELECT TRUNCATE(7.536432,2); +---------------------------------------------------------+ | TRUNCATE(7.536432,2) | +---------------------------------------------------------+ | 7.53 | +---------------------------------------------------------+ 1 row in set (0.00 sec)

case when ... then ...

case when d.generating_capacity >= 0 and d.generating_capacity &lt;= 10 then 10 when d.generating_capacity > 10 and d.generating_capacity &lt;= 20 then 20 when d.generating_capacity > 20 and d.generating_capacity &lt;= 30 then 30 when d.generating_capacity > 30 and d.generating_capacity &lt;= 40 then 40 when d.generating_capacity > 40 and d.generating_capacity &lt;= 50 then 50 when d.generating_capacity > 50 and d.generating_capacity &lt;= 60 then 60 when d.generating_capacity > 60 and d.generating_capacity &lt;= 70 then 70 when d.generating_capacity > 70 and d.generating_capacity &lt;= 80 then 80 when d.generating_capacity > 80 and d.generating_capacity &lt;= 90 then 90 when d.generating_capacity > 90 and d.generating_capacity &lt;= 100 then 100 <!-- when d.generating_capacity > 100 then 11 --> end as byGroup

注意 <= 需要用&lt;= 代替

LENGTH(str)

返回字符串str的长度,以字节为单位。 一个多字节字符算作多字节。这意味着,对于包含五个二字节字符,length()返回10,而CHAR_LENGTH()返回5。

SQL> SELECT LENGTH('text'); +---------------------------------------------------------+ | LENGTH('text') | +---------------------------------------------------------+ | 4 | +---------------------------------------------------------+ 1 row in set (0.00 sec)

concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

company like concat('%', #{powerStation}, '%')

UNION——操作符用于合并两个或多个 SELECT 语句的结果集。(注:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。)

UNION 语法

SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2

UNION 操作符选取不同的值。如果允许有重复的值,请使用 UNION ALL

2.UNION ALL 语法:会列出所有重复的值。

SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。


<where>

<select id="selectIfCondition" resultType="com.heiketu.testpackage.pojo.Product"> SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDesc FROM Products <where> <if test="prodId != null and prodId != ''"> AND prod_id = #{prodId} </if> <if test="prodName != null and prodName != ''"> AND prod_name = #{prodName} </if> </where></select>


映射文件中的where标签可以过滤掉条件语句中的第一个andor关键字。以上SQL当prodId!=null时会被mybatis的where标签去除掉多余的and关键字,生成的sql如下:

SELECT prod_id prodId, vend_id vendId, prod_name prodName, prod_desc prodDescFROM ProductsWHERE prod_id = ?AND prod_name = ?

<if>

在mybatis的xml文件中编写sql语句有时候需要判断是否为空或者判断某些值的情况,

<if test="pbycgkQuery.cityCode != null and pbycgkQuery.cityCode != ''"> and city_code = #{pbycgkQuery.cityCode} </if>

<foreach>

foreach 也就是遍历迭代,在SQL中通常用在 in 这个关键词的后面

foreach元素的属性主要有 item,index,collection,open,separator,close。

MySQL XML语法中,如何精确获取并保留指定位小数的值?

分别代表:

item表示集合中每一个元素进行迭代时的别名,

index用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔 符,

close表示以什么结束

基础用法一:

<select id="selectByIds" resultType="com.txw.pojo.User"> select * from user where id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select>

基础用法二:

select schedule_scope_name label, sum(generating_capacity) value from distribsun_station_list <where> <foreach collection="countys" index="index" item="county" open="(" separator="or" close=")"> schedule_scope_name LIKE CONCAT('%', #{county}, '%') <if test="endTime != null and endTime != ''"> and accept_time &lt; #{endTime} </if> </foreach> </where> GROUP BY schedule_scope_name

插入用法:

insert into green_power_intensity_carbon_data ( time, data ) values <foreach collection="list" item="greenPowerIntensityCarbonDataPO" index="index" separator=","> ( #{greenPowerIntensityCarbonDataPO.time}, #{greenPowerIntensityCarbonDataPO.data} ) </foreach>