您的位置:首页 > 博客中心 > 数据库 >

Sql decode sign when length concat 用法详述

时间:2022-03-10 17:12

案例1:查询表A数据,如果某个列(PARAM_VALUE)值太长,前台不好显示,就只取前20个字符;鼠标悬浮时再用层显示全部值;

sql写法:
select
	m.PARAM_VALUE as PARAM_VALUE,
	decode(sign(length(m.PARAM_VALUE)-20),1,CONCAT(SUBSTR(m.PARAM_VALUE,0,20),'...'),m.PARAM_VALUE) as PARAM_VALUE_MSG
from tableA m

decode()函数简介:

主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);

使用方法:

Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

From talbename

Where …

        其中columnname为要选择的table中所定义的column

若只与一个值进行比较

Select monthid ,decode(sale, NULL,‘---’,sale) sale from output


sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1,


CONCAT() 的语法如下:

CONCAT(字串1, 字串2, 字串3,...): 将字串1、字串2、字串3,等字串连在一起。

请注意,Oracle的CONCAT()只允许两个参数;

换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用‘||‘来一次串连多个字串。


<strong><span style="font-size:18px;">length()</span></strong>長度函數是用來找出一個字串的長度。這個函數的名稱在不同的資料庫中不完全一樣:

  • MySQL: LENGTH( )
  • Oracle: LENGTH( )
  • SQL Server: LEN( )

案例2:某销售业务,付款方式Type为人民币时,返回人民币字段值,港币则返回港币值;

SELECT
   case b.ACTURAL_PAYMENT_CURRENCY when '2' then b.BUSINESS_FEE  when '1' then b.HK_BUSINESS_FEE end as "amount_of_money"
FROM tableB  b 

CASE 的语法:在一般的 SELECT 中,其语法如下:
gxlsystem.com,布布扣注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

























Sql decode sign when length concat 用法详述,布布扣,bubuko.com

热门排行

今日推荐

热门手游