How to handle complex queries?
Darwin0id opened this issue · 2 comments
Darwin0id commented
An example of a query:
select invoicedate, cast(year(InvoiceDate) as nchar(4)) +'-'+ cast(month(InvoiceDate) as nvarchar(2)) +'-'+ cast(day(InvoiceDate) as nvarchar(2)) as NewDateFormat from Invoice
Code:
from mo_sql_parsing import parse
parser = parse("select invoicedate, cast(year(InvoiceDate) as nchar(4)) +'-'+ cast(month(InvoiceDate) as nvarchar(2)) +'-'+ cast(day(InvoiceDate) as nvarchar(2)) as NewDateFormat from Invoice")
print(parser)
Error:
Traceback (most recent call last):
File "Desktop/test/main.py", line 2, in <module>
parser = parse("select invoicedate, cast(year(InvoiceDate) as nchar(4)) +'-'+ cast(month(InvoiceDate) as nvarchar(2)) +'-'+ cast(day(InvoiceDate) as nvarchar(2)) as NewDateFormat from Invoice")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/mo_sql_parsing/__init__.py", line 39, in parse
result = _parse(common_parser, sql, null, calls)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/mo_sql_parsing/__init__.py", line 80, in _parse
parse_result = parser.parse_string(sql, parse_all=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/mo_parsing/core.py", line 80, in output
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/mo_parsing/core.py", line 149, in parse
return self._parseString(string, parse_all=parse_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/mo_parsing/core.py", line 171, in _parseString
raise cause.best_cause from None
mo_parsing.exceptions.ParseException: Expecting column_type, found "nvarchar(2" (at char 89), (line:1, col:90)
klahnakoski commented
klahnakoski commented
@Darwin0id thank you for your bug report. nvarchar
has been added.