sqlserver 的类似oracle的decode函数

吐血总结《Mysql从入门到入魔》,图文并茂 文章目录1. 查询1.1 查询多列1.2 检索唯一值1.3 限制输出1.4 注释2. ORDER BY 排序2.1 单列排序3.2 多列排序3.3 指定排序方向4. WHERE 过滤数据4.1 WHERE 子句操作符4.2 范围值检查4.3 空值检查5. 高级数据过滤5.1 WHERE 组合过滤5.2 IN 操作符5.3 NOT 操作符6. 通配符过滤6.1 % 通配符6.2 _ 通配符7. 创建计算字段7.1 计算字段7.2 拼接字段7.3 执行算数计算8. 函数8.1 常用文本处理函数8.2 日期和时间 阅读详情
     原来系统是在oracle上开发的,后来客户一声令下,就转移到sqlserver了。在写存储过程的时候,发现decode方法没有,可以用case when来替代。但是之前项目会议上领导又提出,客户说有可能改为其他数据库(或者oracle或者mysql)。所以就想着写一个oracle的decode方法。
   当然一定要实现多个参数的查找替换。网上 http://soft-app.iteye.com/blog/1360490 有总结几个方法,由于我也是在sqlserver2005,最后也看到他推荐用方法四,所以就采用了其中的方法四,脚本如下:
--拆分字符串方法4:利用sql server2005的OUTER APPLY
-- 测试:select * from dbo.fn_split('1,2,3,4,5',',')   
CREATE FUNCTION [dbo].[fn_split]   
(   
  @str VARCHAR(MAX) ,   
  @split VARCHAR(10)   
)   
RETURNS TABLE  
    AS    
RETURN  
    ( SELECT    B.id   
      FROM      ( SELECT    [value] = CONVERT(XML , '<v>' + REPLACE(@str , @split , '</v><v>')   
                            + '</v>')   
                ) A   
      OUTER APPLY ( SELECT  id = N.v.value('.' , 'varchar(100)')   
                    FROM    A.[value].nodes('/v') N ( v )   
                  ) B   
    )   GO
  有了上面的拆分字符串方法后,就可以将参数组成一个字符串,然后在函数里拆分,相当于传入了多个参数。之前觉得oracle的decode函数的最后一个参数default有点啰嗦,其实如果没有找到的话,我就当成是原来字符串返回,如果我有default值的话,就设置,非要每次都有它不可(因为sql语句里有多个类似decode(table_col1, find,replace, find,replace, table_col1),就会显得很多),这次在做这个sqlserver的decode函数的时候,一定要灵活一点。
  直接贴代码,使用方法就按照测试用例来调用就行:
--sqlserver类似oracle的decode函数
--测试用例一:select dbo.fn_decode('2','NULL,空, 1,一,2,二,没找到') 
--测试用例二:select dbo.fn_decode('23','NULL,空, 1,一,2,二') 
--测试用例三:select dbo.fn_decode('23','NULL,空, 1,一,2,二,没找到') 
--测试用例四:select dbo.fn_decode('null','null,0')
--测试用例五:select dbo.fn_decode(null,'null,0')


CREATE function [dbo].[fn_decode](
	@theSource varchar(100),
	@findReplaceStr varchar(999)
	)
returns varchar(1000)
as          
begin
	if @theSource is null
		set @theSource='null'
	
      declare @hasFind int	--是否找到,0为未找到,1为找到
      declare @theDefault varchar(100)	--未找到的默认值,默认为原字符串
      declare @theTarget	varchar(50)	--找到的目标
      declare @theTargetReplace	varchar(50)--目标被替换的值
      declare @paramCount int		--查找替换字符串的个数
      set @hasFind = 0
      set @theDefault= @theSource
      set @theTarget = ''
      set @theTargetReplace = ''
      set @paramCount = ( select count(0) from dbo.fn_split(@findReplaceStr,',') )

    if @paramCount <2 -- 查找替换的字符串应该大于2个,否则返回原字符串
  	return  @theSource
 
   declare recordCursor cursor for select * from dbo.fn_split(@findReplaceStr,',') 
   open recordCursor 
    
   while @paramCount>=2  -- and @@fetch_status <> -1  	
	 begin
		set @paramCount = @paramCount -2  -- 准备取查找字符串和被替换字符串
		fetch next from recordCursor into @theTarget 
		fetch next from recordCursor into @theTargetReplace 
		
		if @theSource = @theTarget	-- 找到了的话,则返回 
			begin 
				set @hasFind = 1
				break
			end
	  end
	
	if @paramCount = 1 --判断是否剩下最后的默认值,如果是,则返回默认值
		fetch next from recordCursor into @theDefault

   close recordCursor
   deallocate recordCursor 
   
   if @hasFind = 0 
	  return @theDefault
    return @theTargetReplace
end
GO
MFC界面库BCGControlBar v32.0 - 对话框、仪表盘控件升级 亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFCv32.0正式发布!新版本支持Windows 11、增强功能区简化模式、改进控件外观等,以及其他新功能和改进。需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.0正式版下载 对话框和表单 1. 添加了一个新的全局标志globalData.m_bAutoPrepareComboListStyles:如果您希望. 阅读详情

相关推荐

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 806

oracle中decode函数介绍以及在sqlserver中的实现

  decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN     RETURN(翻译值1) ELSIF 条件=值2 THEN     RETURN(翻译值2)     ...... ELSIF 条件=值n THEN     RETURN(翻译值n) ELSE     RETURN(缺省值) END IFdecode(...

liu3743120的博客 5342

保姆级教程:用微信小程序+OneNet MQTT API,5分钟搞定温湿度数据实时展示

本文提供了一份详细的教程,教你如何利用微信小程序和OneNet MQTT API在5分钟内实现温湿度数据的实时展示。从OneNet平台配置到小程序数据绑定,手把手指导零基础开发者快速搭建监控系统,涵盖API调用、数据解析和界面设计等关键步骤。

weixin_30298497的博客 370

SQLSERVER SQL性能优化

1.选择最有效率的表名顺序(只在基于规则的优化器中有效)        SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当SQLSERVER处理多个表时,会运用排序及合并的方式连接它们,     首先,扫描第一个表(FRO

figerDeng的专栏 848

YOLOv8魔改网络后训练全零?别慌,关掉AMP混合精度训练试试

本文探讨了YOLOv8魔改网络后训练出现全零指标的问题,指出AMP混合精度训练与自定义网络结构的不兼容性。通过分析梯度消失现象和AMP工作原理,提供了关闭AMP、调整学习率等解决方案,并建议预防性开发实践以避免类似问题。

weixin_28338005的博客 322

基于STM32设计的遥控灭火消防小车_296

随着城市化进程的加速和火灾发生频率的增加,传统的消防方式在应对初期火灾时存在反应慢、效率低等问题。为了提高火灾响应速度和灭火效率,本设计开发了一款基于STM32单片机的遥控灭火消防小车。该小车配备了烟雾检测、温湿度监测、火源定位、灭火操作等功能,能够通过蓝牙和WIFI实现远程控制与实时视频传输。设计采用了MQ2烟雾传感器、SHT30温湿度传感器、火光传感器和ESP32摄像头模块等硬件设备。系统不仅能够自动检测和定位火源,还可以手动调整灭火器对准位置,进行干粉灭火。此外,蜂鸣器用于火源报警,确保操作人员及时得

724

sql一些常用的函数--decode,case when ,nvl

condition是一个返回布尔类型的表达式,如果表达式返回true,则整个函数返回相应result的值,如果表达式皆为false,则返回ElSE后result的值,如果省略了ELSE子句,则返回NULL。LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,‘0’) 记录编号 from。decode(条件,值1,返回值1,值2,返回值2,…select decode(性别,男,1,0),decode(性别,女,1,0) from 表。

weixin_44227650的博客 2776

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission

摘要:本文介绍如何在VS Code中为Claude Code插件配置--dangerously-skip-permission参数,包含两种方法:图形界面设置(适合新手)和直接编辑settings.json(精准配置)。该参数会跳过权限检查,仅建议在本地测试环境中使用。配置后需通过命令面板验证参数是否生效,并注意安全风险,避免在生产环境使用。多参数配置时需用数组格式,不同版本插件可能键名略有差异。

AI天才研究院 4998

sql server中类似oracle中decode功能的函数

SQL Server 2008中的写法: select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL WHEN '0' THEN '国家重点' WHEN '1' THEN '省重点' WHEN '2' THEN '市重点' WHEN '3' THEN '区/县重点'

hu_shengyang的专栏 4万+

基于PChmi.dll的PLC报警显示和记录(C#)

本文介绍了如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。通过订阅PLC的报警事件,我们可以实时显示报警信息,并通过日志文件记录报警历史。PLC(可编程逻辑控制器)在工业自动化领域中扮演着重要的角色,而报警显示和记录是PLC应用中常见的需求。本文将介绍如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。当然,这只是实现报警显示和记录的基本框架,具体的实现方式可能因不同的PLC和HMI库而有所差异。你需要根据你所使用的具体库和设备进行相应的调整和修改。

ByteLegend的博客 1673

【光子 AI】AI Agent 知识体系深度研究报告

从理论基础到前沿应用:全面解析人工智能代理的核心架构、关键技术与发展趋势📅 2026 年 3 月 | 📊 深度研究报告 | 🔬 人工智能领域 | 📈 前沿技术分析**AI Agent(人工智能代理)**是一种能够感知环境、基于所获得的信息做出决策,并执行行动以影响该环境的软件系统。AI Agent 的设计旨在模仿或实现智能行为,它们可以在各种环境中操作,包括物理世界和虚拟空间。随着大语言模型(LLM)技术的突破性进展,AI Agent 正从实验室研究快速走向产业应用。根据 Gartner 发布的《2

AI天才研究院 177

SQL中 decode()函数简介

decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明); 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值) From talbename Where … 其中columnname为要选择的table中所定义的column, ·含义解释: decode(条件,值1,翻译值1,值2,翻译

567

基于 YOLO26 的车辆实时检测与计数系统

本文提出了一种基于YOLO26的车辆实时检测与计数系统。系统采用CSPDarknet53作为主干网络,结合特征金字塔和多尺度预测实现高精度车辆检测。通过DeepSORT算法进行目标跟踪,并统计车辆数量、行驶方向和交通流量。实验表明,该系统在保持实时性能的同时,检测精度达到92.3%,可有效应用于智能交通管理。系统采用Python实现,支持GPU加速,适用于多种交通场景下的车辆监测需求。

一键难忘的博客 908

oracle decode sqlserver,sqlserver 的类似oracle的decode函数

原来系统是在oracle上开发的,后来客户一声令下,就转移到sqlserver了。在写存储过程的时候,发现decode方法没有,可以用case when来替代。但是之前项目会议上领导又提出,客户说有可能改为其他数据库(或者oracle或者MysqL)。所以就想着写一个oracle的decode方法。当然一定要实现多个参数的查找替换。网上 http://soft-app.iteye.com/blog...

weixin_33532301的博客 540

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle 类似 sqlserver,sqlserver 的类似oracle的decode函数

原来系统是在oracle上开发的,后来客户一声令下,就转移到sqlserver了。在写存储过程的时候,发现decode方法没有,可以用case when来替代。但是之前项目会议上领导又提出,客户说有可能改为其他数据库(或者oracle或者mysql)。所以就想着写一个oracle的decode方法。当然一定要实现多个参数的查找替换。网上 http://soft-app.iteye.com/blog...

weixin_32161925的博客 369

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

oracle 类似decode,sql server中类似oracle中decode功能的函数

SQL Server 2008中的写法:select t.PROJECTNAME,t.BUILDCONTENTSCALE,CASE t.PROJECTLEVELWHEN '0' THEN '国家重点'WHEN '1' THEN '省重点'WHEN '2' THEN '市重点'WHEN '3' THEN '区/县重点'END AS PROJECTLEVEL,t.TOTALINVESTMENT,t.P...

weixin_39553653的博客 265

oracle sql中decode,sql server中类似oracle中decode功能的函数 | 学步园

SQL Server 2008中的写法:select t.PROJECTNAME,t.BUILDCONTENTSCALE,CASE t.PROJECTLEVELWHEN '0' THEN '国家重点'WHEN '1' THEN '省重点'WHEN '2' THEN '市重点'WHEN '3' THEN '区/县重点'END AS PROJECTLEVEL,t.TOTALINVESTMENT,t.P...

weixin_33992214的博客 439

SQL Server数据库和Access数据库的"DECODE"函数问题

作为长期在Oracle下开发的程序员来说,没有DECODE是非常可怕的事情。正巧最近做的自己的小工具的时候,需要在SQL Server和Access实现DECODE函数的功能。查了一下资料,汇总如下: 在SQL Server环境下,使用CASE ... WHEN ... END 进行处理,例子如下:     SELECT 'Price Category' =

大蚂蚁的技术窝 1741

COALESCE函数

类似于 oracle中decode函数的MSSQL函数 ①用途: 将空值替换成其他值 返回第一个非空值 ②表达式: COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达...

weixin_30562507的博客 108

oracle 类似decode,类似于ORACLE decode 的用法

SQL Server 2008中的写法:select t.PROJECTNAME,t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL WHEN '0' THEN '国家重点' WHEN '1' THEN '省重点' WHEN '2' THEN '市重点' WHEN '3' THEN '区/县重点' END AS P...

weixin_39673303的博客 316

decode函数用法

3、decode只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,case when可用于=,>=,

yuandingsanshi的博客 6038

Oracle # 字符串匹配函数(Oracle、SQLSERVER、Excel)

引言: 当数据库设置字段的时候,会设置1表XXX;0表示XXX。查询的时候怎么显示汉字呢? Oracle数据库: 普通查询数据: select * from U_ORANGEZATION 匹配查询数据: select ORG_ID,ORG_NAME,PARENT_ORD_ID,CREATE_TIME,CREATE_USERCODE, CREATE_USERANME,MOFDI...

qq_16313575的博客 1215

跨越Oracle和MSSQL关系数据库开发——01开关语句

1. 概述作为本系列的第一篇文章,我想从一个简单的专题开始。技术的文章通常都比较枯燥乏味,我尽量写的通俗易懂,并使用一些有趣的例子。类似于高级语言,Oracle和MSSQL都提供了开关语句来处理多分枝逻辑。本文将讲述两种数据库开关语句的相同和不同之处,并介绍一些使用经验。 2. 使用条件语句表达多重选择2.1 PL/SQL的条件语句   在PL/SQL中,可以使用I

seafer的专栏 2177
上一篇: 编程词汇
下一篇: 一次替换多个字符串,批量替换多个字符串
wangjunkg
博客等级 码龄20年 12粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值