klahnakoski/mo-sql-parsing

How to handle complex queries?

Darwin0id opened this issue · 2 comments

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)

@Darwin0id thank you for your bug report. nvarchar has been added.

https://pypi.org/project/mo-sql-parsing/10.485.24016/