Ik heb in mijn database een nvarchar veld genaamd [dimensies]. Hierin wordt als volgt een dimensie opgeslagen: '3,6 x 3,0 x 2,4'. Maar dit kan bijv ook '3,62 x 3,32 x 2,4' zijn. Dus soms 1 decimaal en soms 2.
Ik wil nu de middelste float eruit plukken om mee te rekenen. Dit is mij op zich gelukt alleen op een manier waarvan ik mij ten zeerste afvraag of het de meest efficiente manier is
Dit werkt dus. Ik zoek eerst de eerste ' x ' en tel er 3 op, dat is mijn substring start positie. Dan zoek ik de tweede ' x ' en gebruik die om de lengte te bepalen voor de substring.
Nou was ik eerst begonnen met PATINDEX, maar dat lukte niet omdat ik geen goeie regex kon maken. Ik heb al met een regex tester zitten klooien maar ik heb daar te weinig ervaring mee.
Dus ik vroeg mij af of iemand hier nog een makkelijke of efficiëntere manier voor heeft
De data komt overigens uit een view, en het resultaat moet ik ook weer in een view verwerken. Dus ik kan niet alle SQL programming syntax gebruiken als bijv in een functie of een stored procedure.
Ik wil nu de middelste float eruit plukken om mee te rekenen. Dit is mij op zich gelukt alleen op een manier waarvan ik mij ten zeerste afvraag of het de meest efficiente manier is

code:
1
2
3
4
5
6
| select [Dimensions], CAST(REPLACE(SUBSTRING([Dimensions],CHARINDEX(' x ',[Dimensions])+3,CHARINDEX(' x ',[Dimensions],7)-(CHARINDEX(' x ',[Dimensions])+3)),',','.') as FLOAT) from dump where itemid = '999' |
Dit werkt dus. Ik zoek eerst de eerste ' x ' en tel er 3 op, dat is mijn substring start positie. Dan zoek ik de tweede ' x ' en gebruik die om de lengte te bepalen voor de substring.
Nou was ik eerst begonnen met PATINDEX, maar dat lukte niet omdat ik geen goeie regex kon maken. Ik heb al met een regex tester zitten klooien maar ik heb daar te weinig ervaring mee.
Dus ik vroeg mij af of iemand hier nog een makkelijke of efficiëntere manier voor heeft

De data komt overigens uit een view, en het resultaat moet ik ook weer in een view verwerken. Dus ik kan niet alle SQL programming syntax gebruiken als bijv in een functie of een stored procedure.