我正在处理一个在数据库的记录字段中注入一个查询的应用程序。 目前我需要一个包含查询的字符串并用逗号分隔
这是字符串
APDoc.brn, APDoc.rbtn, APDoc.perd, APDoc.dtip, APDoc.U5, APDoc.Stt, APDoc.Ivcn, APDoc.InvcD, APDoc.Vndd AS Rut, Venr.ae AS Proveedor, APDoc.At, CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1 WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac], APDoc.POr, APDoc.Sb AS Entidad, APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo, datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS
通过split()和join()
分隔它们基本上没有问题queryCortada = queryCortada.split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").split(",");
问题是最后一个字段将其分为以下
datediff(day,
APDoc.Inate,
GETDATE()) AS DIFERENCIA_DIAS
我需要这个领域只有一个,想法是有以下
APDoc.brn,
APDoc.rbtn,
APDoc.perd,
APDoc.dtip,
APDoc.U5,
APDoc.Stt,
APDoc.Ivcn,
APDoc.InvcD,
APDoc.Vndd AS Rut,
Venr.ae AS Proveedor,
APDoc.At,
CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1 WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac],
APDoc.POr, APDoc.Sb AS Entidad,
APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo,
datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS
原始文本可以包含多个字段作为datediff(asdas,asdasd,asdasd)
答案 0 :(得分:0)
要做到这一点,您需要编写复杂的正则表达式或通过词法状态机解析字符串。
即使您认为今天已经涵盖了基础,简单拆分也会导致未来陈述出现问题。
答案 1 :(得分:0)
你可以尝试一下吗?
queryCortada.replace(/\((.*)\)+/g, "(temp**comma)").split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").replace(/temp\*\*comma/g, ",").split(",");