質問

I need some help with a SQL view please..

I am creating a view to be used for reporting via Crysyal.. One of the fields that I need is a string field that contains three values separated by a character '~' I basically need this splitting out within my Select query within view to three separate fields..

An example is below.. The field is called 'Problem.Description' and contains the following example data..

'Trading~Concession~Telemetry - OCPD / Low Sales'

So, in my sql view I get a single column.. What I need is three columns each with different column names containing the data between the '~'..

For example:

Trading Status Problem1 Problem2 Trading Concession Telemetry - OCPD / Low Sales

I have a trawl around and found a few code examples that work but none will work within my view.

Many thanks in advance :)

役に立ちましたか?

解決

you mean split the string at the delimiter ?

declare @a as varchar(100)
set @a='Trading~Concession~Telemetry - OCPD / Low Sales'

select substring(@a,0,patindex('%~%',@a)) as trading_status,reverse(substring(reverse(@a),0,PATINDEX('%~%',(reverse(@a))))) as problem1,
substring(@a,patindex('%~%',@a)+1,10) as problem2

DEMO

Note:its not a dynamic solution but it works in your case

他のヒント

Try this:

select cast(c1 as nvarchar) + '~' + cast(c2 as nvarchar) + '~' + cast(c3 as nvarchar)
from table

You should be able to build such a splitting operation with a combination of SUBSTRING and INSTR. Your DBMS (Oracle, MySQL, SQL-Server?) could provide more convenient functions too. Check the respective documentation for "string functions".

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top