SQL 某字段值为a/b 如何用语句取到a
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 某字段值为a/b 如何用语句取到a相关的知识,希望对你有一定的参考价值。
我理解LZ的意思是,比如a/b为'5000/100',那么如何提取'5000'吧.假设字段为c-name,表为t-table,则语句如下:select SUBSTR(c-name,1,INSTR(c-name,'/')-1) from t-table WHERE .....
使用INSTR函数获取'/'位置,采用SUBSTR函数截取'/'之前的字符即可。追问
提示 instr为不可识别的内置函数名称
追答不是oracle数据库?
追问SQL
追答是sqlserver数据库?上边函数是oracl的,你找找吧,思路是你先找到'/'位置,然后采用函数截取即可。
参考技术A 什么意思,,,SELECT LEFT('a/b',1)
SELECT SUBSTRING('a/b',1,1)
这样,,,?
你可以根据情况将我写的a/b替换成你的字段名字 参考技术B 你是说字段的值是a或b吗?
这样的话就很简单呀
select * from tablename where xx='a'
还是说你的那个字段值就是'a/b'?
那就这样:select left(xx,0,1) from tablename where xx='a/b' 参考技术C select substr('a/b',0,instr('a/b','/')-1) from dual; 参考技术D 除非你知道B的值。
select fieldname*b from tablename 第5个回答 2013-09-27 substr('a/b',0,instr('a/b','/')-1)
如何用case/when语句实现不同条件下更新同一张数据表的不同字段?
现有数据表t_data(id, type ,field1, field2)。
现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='B'时更新field2的值为'X'。
请问能否用case/when实现该功能?谢谢。
可使用case when来实现这个条件,需要嵌套子查询语句,sql语句代码示例如下:
1、首先你这里的不同字段应该有个优先级别,类似先判断哪个字段然后判断哪个字段。如果仅仅以字段和字段值来作为条件 用DECODE 套 DECODE 直到符合你的逻辑需求。
2、如果牵扯到两个字段值的比较。例如:如果字段A等于字段B则显示XXX 这种判断请使用NULLIF配合DECODE也可以用WHEN CASE (9以前可能不支持NULLIF)。
3、如果是模糊比较例如:字段A大于字段B,需要更多的函数来判断常用的有SIGN通过加减法之后的结果来判断两个字段大小。
举例如下:
1、数据表为DemoTable,字段有id, condition1,condition2,condition3,condition4,condition5
2、要求是查询DemoTable中,condition1,condition2,condition3,condition4,condition5五个字段中符合任意两个或两个以上的条件的内容。
参考技术A 需要复制一段代码,带入后即可更新一张数据表的不同字段,具体如下:复制代码 代码如下:
UPDATE mytable
SET myfield = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3)
这里使用了case when 这个小技巧来实现批量更新。
举个例子:
复制代码 代码如下:
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)
这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。
即是将条件语句写在了一起。
这里的where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。 参考技术B 现有数据表t_data(id, type ,field1, field2)。
现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='B'时更新field2的值为'X'。
update t_data set field1=(case when type='A' then 'X' else filed1 end)
,filed2=(case when type='B' then 'X' else filed2 end)
where xxx 参考技术C 现有数据表t_data(id, type ,field1, field2)。
现在希望写一条update语句,实现当type='A'时更新field1的值为'X',当type='B'时更新field2的值为'X'。 参考技术D update t_data set field1=(case when type='A' then 'X' else filed1 end)
,filed2=(case when type='B' then 'X' else filed2 end)
where xxx本回答被提问者和网友采纳
以上是关于SQL 某字段值为a/b 如何用语句取到a的主要内容,如果未能解决你的问题,请参考以下文章
如何用sql语句将一个字段的值加1-MS-SQLServer/疑难问题