如何用SQL动态截取字符串的长度?
2008-04-15 12:58
447 查看
我们都知道,SQL截取字符串的固定长度,可以有Sub()函数,Rigth()函数,或者Left()函数.如果截取的字符串是动态的一个字段,那么显然,以上3个函数是不适用的.那么如何动态的截取字符串的长度呢?
比如: 一个表里面有这么ValidDate字段,它的数据是这样的形式插进去的, 1,年; 2,年;6,月;12,月;120,天;180,天;
ValidDate 的数据是由左边的数值,中间的分隔符和右边的单位组成的.而且左边的数值为1,2,3位数.那么这种情况我们如何来截取左边的动态的数值呢?
以下方法探讨这样的一个思路: 可以先写一个方法:
CREATE FUNCTION FUN_GETNumChar (@InString VarChar(100))
RETURNS VarChar(100) AS
BEGIN
DECLARE @RetString VarChar(100)
SET @RetString = RTRIM(LTRIM(@InString))
WHILE LEN(@RetString) > 0
BEGIN
IF RIGHT(@RetString, 1) NOT IN('0','1','2','3','4','5','6','7','8','9')
SET @RetString = SUBSTRING(@RetString, 1, LEN(@RetString) - 1)
ELSE
BREAK
END
RETURN (@RetString)
END
然后在数据库内执行编译一下..编译完成后,在所需用到的SQL里面引用此方法:
如以上述所说的ValidDate 字段为例:
CONVERT(CHAR(10), CASE RIGHT(VALID_DATE, 1)
WHEN '年' THEN DATEADD(YEAR, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), PRODUCE_DATE)
WHEN '月' THEN DATEADD(MONTH, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), RODUCE_DATE)
WHEN '日' THEN DATEADD(DAY, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), PRODUCE_DATE) END, 120) AS VALIDTIME
比如: 一个表里面有这么ValidDate字段,它的数据是这样的形式插进去的, 1,年; 2,年;6,月;12,月;120,天;180,天;
ValidDate 的数据是由左边的数值,中间的分隔符和右边的单位组成的.而且左边的数值为1,2,3位数.那么这种情况我们如何来截取左边的动态的数值呢?
以下方法探讨这样的一个思路: 可以先写一个方法:
CREATE FUNCTION FUN_GETNumChar (@InString VarChar(100))
RETURNS VarChar(100) AS
BEGIN
DECLARE @RetString VarChar(100)
SET @RetString = RTRIM(LTRIM(@InString))
WHILE LEN(@RetString) > 0
BEGIN
IF RIGHT(@RetString, 1) NOT IN('0','1','2','3','4','5','6','7','8','9')
SET @RetString = SUBSTRING(@RetString, 1, LEN(@RetString) - 1)
ELSE
BREAK
END
RETURN (@RetString)
END
然后在数据库内执行编译一下..编译完成后,在所需用到的SQL里面引用此方法:
如以上述所说的ValidDate 字段为例:
CONVERT(CHAR(10), CASE RIGHT(VALID_DATE, 1)
WHEN '年' THEN DATEADD(YEAR, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), PRODUCE_DATE)
WHEN '月' THEN DATEADD(MONTH, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), RODUCE_DATE)
WHEN '日' THEN DATEADD(DAY, CAST(DBO.FUN_GETNumChar(VALID_DATE) AS INT), PRODUCE_DATE) END, 120) AS VALIDTIME
相关文章推荐
- 绑定SqlDataSource的Gridview字符串字段长度截取
- 如何截取字符串,使其在浏览器上显示相同长度?
- 绑定SqlDataSource的Gridview字符串字段长度截取
- sql中截取和算出字符串的长度
- SQL 字符串截取左边指定长度字符串中文、英文
- ASP如何计算中英文混合字符串长度和截取字符串
- ASP如何计算中英文混合字符串长度和截取字符串 .
- MyBatis动态sql_trim自定义字符串截取
- DataBinder.Eval中如何截取一定长度的字符串
- java oracle存储过程/函数(2):字符串数组传出存储过程,动态sql如何fetch到游标
- C#如何根据字节截取字符串指定长度
- 绑定SqlDataSource的Gridview字符串字段长度截取
- sql中从指定位置截取指定长度字符串
- SQL截取非固定长度(有关键字符)的字符串
- DEDE中如何过滤掉Html标签,并且截取字符串长度
- LoadRunner如何使用lr_save_var截取任意字符串长度
- DEDE中如何过滤掉Html标签,并且截取字符串长度
- 绑定SqlDataSource的Gridview字符串字段长度截取(转)
- Sql版本除去html并截取指定长度的字符串
- DEDE中如何过滤掉Html标签,并且截取字符串长度