好程序员Java分享Mybatis必会的动态SQL,前言 Mybatis可谓是java开发者必须会的一项技能。MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。
2024年04月12日
好程序员Java分享Mybatis必会的动态SQL,前言 Mybatis可谓是java开发者必须会的一项技能。MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。
2024年04月12日
平时在工作中要对数据库进行查询,经常会有去除字符串空格的操作,大家首先想到的是使用TRIM()函数,不过在sqlServer数据库中不存在该函数,却而代之的是LTRIM()和RTRIM()两个函数。
2024年04月12日
1.方案1如下:-- =============================================
-- Description: split函数 -- Debug:select * from dbo.Fun_Split('ABC:BC:C:D:E',':')
-- 修改時間:
-- 修改人:
-- =============================================
create FUNCTION [dbo].[F_StringSplit]
(
@SourceSql varchar(8000),
@StrSeprate varchar(10)
)
RETURNS
@TEMP_Table TABLE ([text] varchar(2000)) -- collate Chinese_Taiwan_Stroke_CS_AS) --Chinese_Taiwan_Stroke_CI_AS 不區分大小寫
AS
BEGIN
DECLARE @i int
SET @SourceSql=rtrim(ltrim(@SourceSql))
if RIGHT(@SourceSql,LEN(@StrSeprate))<>@StrSeprate --追加代码
set @SourceSql=@SourceSql+@StrSeprate --追加代码
SET @i=charindex(@StrSeprate,@SourceSql)
WHILE @i>=1
BEGIN
if rtrim(ltrim(left(@SourceSql,@i-1)))='' --追加代码start
begin
SET @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
SET @i=charindex(@StrSeprate,@SourceSql)
continue
end--追加代码end
INSERT @TEMP_Table VALUES(left(@SourceSql,@i-1))
SET @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
SET @i=charindex(@StrSeprate,@SourceSql)
END
RETURN
END
2024年04月12日
这几天都在修复bug真的太忙了,期间也遇到了一个挺有趣bug,和大家分享一下,这是一块sql挺复杂的报表相关业务,不知道哪一位大佬在错综复杂的 嵌套 + 平行 if判断中sql拼接在某些UI组合下出问题了,最终的 sql 架构类似这样的。一:背景
1. 讲故事
2024年04月12日
mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。 以下是trim标签中涉及到的属性: