A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
Hi @david chase ,
It is better to use tokenization instead of string parsing.
We are converting an input string into XML data type, and using simple XQuery to get Make and Model.
The XML looks like the following:
<root>
<r>BMW</r>
<r>X3M</r>
<r>COMPETITION</r>
<r />
</root>
After that we are retrieving 1st token as a Make (...r[1]...), everything else after it (...r[position() gt 1]...) is a Model.
T-SQL
DECLARE @MakeAndModel VARCHAR(80) = 'BMW X3M COMPETITION '
, @separator CHAR(1) = SPACE(1);;
DECLARE @xml_vehicle XML = TRY_CAST('<root><r>' +
REPLACE(@MakeAndModel, @separator, '</r><r><') +
'</r></root>' AS XML);
SELECT @MakeAndModel AS MakeAndModel
, @xml_vehicle.value('(/root/r[1]/text())[1]', 'VARCHAR(30)') AS Make
, @xml_vehicle.query('data(/root/r[position() gt 1])').value('.', 'VARCHAR(30)')AS Model
Output
+----------------------+------+-----------------+
| MakeAndModel | Make | Model |
+----------------------+------+-----------------+
| BMW X3M COMPETITION | BMW | X3M COMPETITION |
+----------------------+------+-----------------+