SQL谜题(加减符号替代)
问题:将以下字符串”.1.2.3.4.5.6.7.8.9 = 1“中的符号点(.)更改为符号加(+)或符号(-),有多少种方法?请用SQL解决此问题
计算过程: CREATE TABLE #(VAL INT)
INSERT INTO #
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 9
CREATE TABLE #1(VAL CHAR(1)) INSERT INTO #1
SELECT '+' UNION ALL
SELECT '-' ;
WITH A AS(
SELECT #1.VAL VAL1,#.VAL FROM # JOIN #1 ON 1=1) SELECT
RTRIM(A1.VAL1)+RTRIM(A1.VAL)+
RTRIM(A2.VAL1)+''+RTRIM(A2.VAL)+
RTRIM(A3.VAL1)+''+RTRIM(A3.VAL)+
RTRIM(A4.VAL1)+''+RTRIM(A4.VAL)+
RTRIM(A5.VAL1)+''+RTRIM(A5.VAL)+
RTRIM(A6.VAL1)+''+RTRIM(A6.VAL)+
RTRIM(A7.VAL1)+''+RTRIM(A7.VAL)+
RTRIM(A8.VAL1)+''+RTRIM(A8.VAL)+
RTRIM(A9.VAL1)+''+RTRIM(A9.VAL) Result
FROM A A1,A A2,A A3,A A4,A A5,A A6,A A7,A A8,A A9
WHERE A1.VAL=1 AND A2.VAL=2 AND A3.VAL=3 AND A4.VAL=4 AND A5.VAL=5 AND A6.VAL=6 AND A7.VAL=7 AND A8.VAL=8 AND A9.VAL=9
AND
CASE WHEN A1.VAL1='-' THEN -A1.VAL ELSE A1.VAL END+
CASE WHEN A2.VAL1='-' THEN -A2.VAL ELSE A2.VAL END+
CASE WHEN A3.VAL1='-' THEN -A3.VAL ELSE A3.VAL END+
CASE WHEN A4.VAL1='-' THEN -A4.VAL ELSE A4.VAL END+
CASE WHEN A5.VAL1='-' THEN -A5.VAL ELSE A5.VAL END+
CASE WHEN A6.VAL1='-' THEN -A6.VAL ELSE A6.VAL END+
CASE WHEN A7.VAL1='-' THEN -A7.VAL ELSE A7.VAL END+
CASE WHEN A8.VAL1='-' THEN -A8.VAL ELSE A8.VAL END+
CASE WHEN A9.VAL1='-' THEN -A9.VAL ELSE A9.VAL END=1
执行结果:

SQL谜题(加减符号替代)的更多相关文章
- 去除input[type=number]最右边的spinners(默认加减符号)
// 去掉input[type=number]默认的加减号 input[type='number'] { -moz-appearance:textfield; } input[type=number] ...
- linux 加减符号
[root@LocalWeb01 ~]# aa=11[root@LocalWeb01 ~]# bb=22[root@LocalWeb01 ~]# cc=$aa+$bb[root@LocalWeb01 ...
- sql时间加减
/时间转成年月日时分秒select date_format(now(),'%Y%m%d%H%i%S')//时间转成年月日select date_format(now(),'%Y%m%d')//去年此时 ...
- java中可以对时间进行加减处理,有时候不用在sql语句中处理
String ssny = (String) pd.get("ssny"); SimpleDateFormat simpleDateFormat=new SimpleDateF ...
- Sql里时间加减
简单的时间加减 DATEADD(dd,-30, GETDATE())) 使用DateADD方法: 参数1:间隔,表示要添加的时间间隔,一天还是一月还是一年 参数2:要加或减的个数,加一年或加一月 参数 ...
- Oracle中的日期加减
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate ...
- mysql日期加减
mysql日期加减一.MySQL 为日期增加一个时间间隔:date_add().1. 示例:set @dt = now();select date_add(@dt, interval 1 day); ...
- Oracle 如何对时间进行简单加减运算
在我们用dbms_job包进行定时Job的时候,需要设置时间间隔,所以需要知道时间的基本加减方法. SQL> alter session set nls_date_format='yyyy-mm ...
- ORACLE日期加减【转】
首先,感谢这个作者的辛勤汗水给我们带来的总结,因为日期函数操作对平时的使用真的是很常用,所以收藏一下以作后期使用. 原贴地址:http://www.cnblogs.com/xiao-yu/archiv ...
随机推荐
- Struts2之开山篇
①Struts2是什么? Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图 ...
- Axure RP动态面板操作
参考资料: 动态面板实现banner的轮播效果
- 【转】MySQL性能优化的最佳21条经验
文章转自: http://blog.csdn.net/waferleo/article/details/7179009 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关 ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- java时间类型操作
java中Date类型与字符串相互转化 Date date = new Date(); System.out.println(date); //DateFormat类为一个 ...
- Oracle 查询语句(where,order by ,like,in,distinct)
select * from production;alter table production add productionprice number(7,2); UPDATE production s ...
- 【转】ORACLE的REDO与UNDO
一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...
- .net导入excel数据到数据库中
在开发过程中我们经常面临着需要将数据导出或者导入到系统中,例如一些生产管理系统,项目管理系统等等都会有这样的需求: 将excel数据到系统中思路:获取excel中每一行的数据,然后存入集合中,批量添加 ...
- js瀑布流 原理实现揭秘 javascript 原生实现
web,js瀑布流揭秘 瀑布流再很久之前流行,可能如我一样入行晚的 ,可能就没有机会去使用.但是这个技术终究是个挺炫酷的东西,花了一个上午来研究,用原生js实现了一个,下面会附上源码,供大家解读. 说 ...
- 使用bootstrap的日期插件
1. 需要用的js包点击下载,在项目中引入该js. <script language="JavaScript" src="${pageContext.reques ...