一个可以解析嵌套IIF语句的代码
时间:2022-04-23
本文章向大家介绍一个可以解析嵌套IIF语句的代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
不太常用,对于一些IIF表达式,需要转换成sql server支持的格式,就写了这个转换。反复调试之后,就可以支持嵌套的调用了。
/// <summary>
/// 转换字符串中的IIF语句
/// </summary>
/// <param name="?"></param>
/// <returns></returns>
static public string ChangeIIF(string oldstr)
{
string str=oldstr;
str.Trim();
int p0=oldstr.IndexOf("IIF");
if(p0==-1)return oldstr;
int p1=str.IndexOf("(",p0);
//排除中间的()的干扰
int l=0; //记录经过的(
int p2=p1+1;
for(;p2<str.Length ;p2++)
{
if(l==0&&str.Substring(p2,1)==",")break;
if(str.Substring(p2,1)=="(")l++; //每增加一个(,l加1
if(str.Substring(p2,1)==")")l--; //每增加一个(,l加1
}
if(p2==str.Length)return ""; //意外
//int p2=str.IndexOf(",",p1);
l=0; //记录经过的(
int p3=p2+1;
for(;p3<str.Length ;p3++)
{
if(l==0&&str.Substring(p3,1)==",")break;
if(str.Substring(p3,1)=="(")l++; //每增加一个(,l加1
if(str.Substring(p3,1)==")")l--; //每增加一个(,l加1
}
if(p3==str.Length)return ""; //意外
//int p3=str.IndexOf(",",p2+1); //第二个“,”
//取得结束的),排除中间的()的干扰
l=0; //记录经过的(
int p4=p3+1;
for(;p4<str.Length ;p4++)
{
if(l==0&&str.Substring(p4,1)==")")break;
if(str.Substring(p4,1)=="(")l++; //每增加一个(,l加1
if(str.Substring(p4,1)==")")l--; //每增加一个(,l加1
}
//int p4=str.Length-1;
if(p4==str.Length)return ""; //意外
if(p1*p2*p3*p4<=0)return oldstr;
return oldstr.Substring(0,p0)+"CASE WHEN "+str.Substring(p1+1,p2-p1-1)+" THEN "+str.Substring(p2+1,p3-p2-1)+" ELSE "+str.Substring(p3+1,p4-p3-1)+" END"+oldstr.Substring(p4+1);
}
- 负载均衡https转发会让服务器误判
- 凯撒加密之一个神奇的Python的API
- 10分钟搞懂TensorBoard用法
- 【最新TensorFlow1.4.0教程02】利用Eager Execution 自定义操作和梯度 (可在 GPU 运行)
- 清北集训Day1T3 LYK loves jumping(期望DP)
- C#进阶系列——WebApi 接口参数不再困惑:传参详解上
- MySQL之多表查询
- 万能pb_ds头文件—bits/extc++.h
- 区块链开发之Go语言—文件系统
- MySQL之单表查询
- C#进阶系列——WebApi 接口参数不再困惑:传参详解 下
- 区块链开发之Go语言—字符串和字节
- MySQL之表的约束
- 【NIPS2017前沿】半监督学习需要Bad GAN,清华特奖学霸与苹果AI总监提出(附Ruslan教授深度学习教程pdf下载)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 噪声纹理之消融效果! shader 入门精要! Cocos Creator Shader !
- Docker安装官方Nexus3镜像构建Docker私服 实践笔记
- js事件大全
- Centos7 安装 jdk8 的正确姿势 实践笔记
- 初探雾效果!shader 源码分析与讲解! Cocos Creator 3D Shader Fog !
- js键盘键值大全
- mysql用户创建+密码修改+删除用户+角色分配 的正确姿势 实践笔记
- Centos7 安装 Nginx 的正确姿势 并设置开机自启 实践笔记
- js函数大全(2)
- HTML之打开/另存为/打印/刷新/查看原文件等按钮的代码
- Centos7 安装 Keepalived+Nginx 双机热备HA 的正确姿势 并开机自启 实践笔记
- 从 findbugs-maven-plugin 到 spotbugs-maven-plugin 帮你找到代码中的bug
- nmap常用命令检查主机在线与在线主机端口开放情况
- 想做测试工程师的可以看看
- nginx 实现Web应用程序的负载均衡