mysql xml 语法使用汇总 (获取值保留指定位小数,根据一定的条件获取值.......)

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 <= 10 then 10
        when d.generating_capacity > 10 and d.generating_capacity <= 20 then 20
        when d.generating_capacity > 20 and d.generating_capacity <= 30 then 30
        when d.generating_capacity > 30 and d.generating_capacity <= 40 then 40
        when d.generating_capacity > 40 and d.generating_capacity <= 50 then 50
        when d.generating_capacity > 50 and d.generating_capacity <= 60 then 60
        when d.generating_capacity > 60 and d.generating_capacity <= 70 then 70
        when d.generating_capacity > 70 and d.generating_capacity <= 80 then 80
        when d.generating_capacity > 80 and d.generating_capacity <= 90 then 90
        when d.generating_capacity > 90 and d.generating_capacity <= 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。

分别代表:

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>

 

 

posted @ 2022-05-16 15:14  jiuchengi  阅读(464)  评论(0编辑  收藏  举报