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

执行结果:

时间: 2024-11-05 21:49:25

SQL谜题(加减符号替代)的相关文章

去除input[type=number]最右边的spinners(默认加减符号)

// 去掉input[type=number]默认的加减号 input[type='number'] { -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input[type=number]有时会出现默认的加减spinne

linux 加减符号

[[email protected] ~]# aa=11[[email protected] ~]# bb=22[[email protected] ~]# cc=$aa+$bb[[email protected] ~]# echo $cc11+22 为什么会出现这种结果,由于linux默认是字符串类型 想要获取正确结果,应该申明 方法一 [[email protected] ~]# declare -i cc=$aa+$bb [[email protected] ~]# echo $cc 33

UIStepper (加减符号)(步进控件)

先看一下效果图 创建一个stepper和一个点击方法 原代码: UIStepper *stepper =[[UIStepper alloc] initWithFrame:CGRectMake(50, 40, 40, 40)]; [stepper addTarget:self action:@selector(stepperClick:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:stepper]; [s

C语言有符号加减溢出

sizeof(short int ) = 2; 测试用例 #include <stdio.h> int main() { short int a = -32768; short int b = 0x8000; short int c = 0xffff; short int d = 0x8001; printf("%d, %d, %d, %d\n", a, b, c, d); a -= 1; b -= 1; c -= 1; d -= 1; printf("%d, %

SQL Server 中的时间的加减和时间的比较

最近在写一个项目时,用到了时间的比较和时间的加减,在这里简单说一下,我也是刚接触数据库不久,如有说的不当之处望大家包涵,指正 一.时间的比较 开始的时候我比较时间用的是 Time>GETDATE() 简单粗暴 其实SQL Server有自带的时间比较函数,所以可以用它自带的,还安全也很方便 DATEDIFF(); 我参照的W3School 中对于DATEDIFF函数的解析,具体如下: 语法 DATEDIFF(datepart,startdate,enddate) 其中datepart是只你要比较

DateTime操作,时间范围,加减

DB里边存的是char类型数组的时间,例如20151111 12171220000,现在需要把这个时间加减5s,组成 一个时间范围 然后再写存储过程. 想到的办法就是把这个时间先转换成DateTime,然后DateTime本身有可以做加减的方法.做好之后sql的时候有对应的方法 我的解决方法最后是: DateTime dt = DateTime.ParseExact("20151111 12171220000".substring(0,15),"yyyyMMddHHmmss&

一道int与二进制加减题

int dis_data = 32769; if( dis_data > 0x7fff)  dis_data -= 0xffff; printf("%d\n",dis_data); 上面的dis_data 输出值会是多少?  初一看可能还看不出来,那就计算一下: 0x7fff转换为十进制为 32767,显然 dis_data > 0x7fff, 所以要执行 dis_data -= 0xffff;这一句代码. 现在dis_data = 32769, 那么 0xffff转换为十

表达式求值:从“加减”到“带括号的加减乘除”的实践过程

本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee ● 为什么想做一个表达式求值的程序 最近有一个需求,策划想设置游戏关卡的某些数值,这个数值不是一个常量,而是根据关卡的某些环境数据套上一个计算表达式算出来的.这个需求无法用excel拖表预计算出,因为关卡的环境数据只有在游戏中才能产生,在excel制表时,这些都是未知的.作为程序员,我可以把计算表达式硬编码在代码中,但这个做法有缺陷,如果策划要修改计算表达式的话,只能通过我修改程序并

自己实现的原码、反码、补码、移码的表示与加减运算软件

项目背景:这是我在大二上计算机组成原理这门课时,老师布置了一个课外作业(可以加分),她的要求是做一个能实现原码.反码.补码.移码的表示以及模仿计算机补码做加减运算功能的网络版软件.为了加平时分,于是我用一周的时间粗略地自学下JavaScript,然后将上述功能实现了,虽然只是一个微乎其微的小项目,但对热爱编程的我来说,还是有很大的成就感,故写下此文章已作留念~~~ 下面是实现的页面效果: 下面是实现的JavaScript源码: <!--wenjan.htm--> <html> &l