我的结果是
code Declaration Quantity
123 a1 11boxes Note:(Each box Contains 20nos)
123 a2 230nos Note:(Each contains 100nos)
123 a3 60nos
我需要显示为
code Declaration Quantity
123 a1 11boxes
123 a2 230nos
123 a3 60nos
是否可以拆分线并在注释前显示?
答案 0 :(得分:1)
你可以使用sql server-2008的CHARINDEX()
函数获取长度并使用0到length - 1来使用SUBSTR()
来剪切字符
答案 1 :(得分:1)
或者,如果您认为某些数量可能没有Note:
尝试;
select code, declaration,
SUBSTRING(Quantity,0,
CASE WHEN charindex('Note:',Quantity,0)> 0
THEN charindex('Note:',Quantity,0)
ELSE LEN(Quantity)+1 END) AS Quantity
From YourTable
答案 2 :(得分:0)
您可以在quantity
字段中搜索单词note
以返回结果,但此答案假定任何音符都不会以不同的单词开头。
如果您要查看note
,那么您可以使用charindex()
,类似于:
select code,
declaration,
case
when charindex('Note', quantity) > 0
then rtrim(left(quantity, charindex('Note', quantity)-1))
else quantity end as Quantity
from yourtable
结果是:
| CODE | DECLARATION | QUANTITY |
---------------------------------
| 123 | a1 | 11boxes |
| 123 | a2 | 230nos |
| 123 | a3 | 60nos |
答案 3 :(得分:0)
select code,declaration, case when patindex('% %',ltrim(quantity))>0
then substring(ltrim(descr),0,patindex('% %',ltrim(quantity)))
else quantity end
as quantity
from table_name
从quantity
列值中提取子字符串,直到第一次出现空格字符。 '% %'
LTRIM
删除任意数量的前导空格,否则查询将导致错误的结果。
PATINDEX()
:返回指定表达式中第一次出现模式的起始位置,该模式是此处的空格字符。
即使列值中没有“注意:”字符串,这也会有效。