डायनामिक एसक्यूएल और एसक्यूएल टेक्स्ट निष्पादित - 'कॉलम के पास गलत सिंटैक्स' और 'कैरेक्टर स्ट्रिंग के बाद अनजान कोटेशन मार्क' - एसक्यूएल, एसक्यूएल-सर्वर, vb.net

मुझे यह पता लगाने में समस्या आ रही है कि मेरे पास सिंटैक्स त्रुटि और अनजान उद्धरण चिह्न हैं।

जब मैं यह प्रश्न चलाता हूं:

    query.CommandText = "DECLARE @sql varchar(max);"
query.CommandText = query.CommandText + " DECLARE @cond varchar(max);"
query.CommandText = query.CommandText + " SET @cond = replace(replace(@search, """", """""")," ",""" and """);"
query.CommandText = query.CommandText + " SET @sql = "SELECT distinct datawarehouse.dbo.orderformdump.itemno, basedescription,upc,CAST((SELECT [UNITPRICE] FROM PPPLTD.dbo.[ICPRICP] WHERE [ITEMNO] = replace([DataWarehouse].[dbo].[ORDERFORMDUMP].[ITEMNO],""-"","""") AND [PRICELIST] = (select top 1 priclist from PPPLTD.dbo.ARCUS where IDCUST = (select top 1 CUSTID from PPPLTD.dbo.WEBLOGINACCESS where [USER] = """ + Session("Username") + """)) and [CURRENCY] = ""CDN"" and DPRICETYPE = 1) AS DECIMAL(18,2)),caseqty, qty AS userquantity FROM [DataWarehouse].[dbo].[ORDERFORMDUMP] LEFT JOIN pppltd.dbo.weboeordd ON pppltd.dbo.WEBOEORDD.ITEMNO = REPLACE(datawarehouse.dbo.ORDERFORMDUMP.ITEMNO,""-"","""") and orduniq not in (select orduniq from pppltd.dbo.weboeordsubmit) and WEBOEORDD.ORDUNIQ in (select orduniq from pppltd.dbo.weboeordh where [user] = """ + Session("Username") + """) where (allowinbc = ""Yes"" or allowinab = ""Yes"") ""
query.CommandText = query.CommandText + " SET @sql = @sql + "and (contains((basedescription, category, datawarehouse.dbo.orderformdump.description, itembrand, itemgroup, itemname, datawarehouse.dbo.orderformdump.itemno, itemsubtype, itemtype, subcat, upc), """"" + @cond + """"") ""
query.CommandText = query.CommandText + " SET @sql = @sql + "or (select top 1 1 from PPPLTD.dbo.ICITEMO where OPTFIELD like ""UPC%"" and VALUE like ""%" + replace(@search, """", """""") + "%""""
query.CommandText = query.CommandText + " SET @sql = @sql + "and ITEMNO = DataWarehouse.dbo.ORDERFORMDUMP.itemno) is not null) order by DATAWAREHOUSE.dbo.ORDERFORMDUMP.BASEDESCRIPTION""
query.CommandText = query.CommandText + " EXECUTE (@sql)"

हालांकि, जब मैं लाइन जोड़ता हूं तो क्वेरी ठीक चलती है OR REPLACE(ITEMBRAND, """""", """") LIKE ""%" + @search + "%""

यह मुझे त्रुटियां देता है:

"यूपीसी" के पास गलत वाक्यविन्यास।

तथा

चरित्र स्ट्रिंग के बाद अनजान उद्धरण चिह्न "और ITEMNO = DataWarehouse.dbo.ORDERFORMDUMP.itemno) शून्य नहीं है) DATAWAREHOUSE.dbo.ORDERFORMDUMP.BASEDESCRIPTION द्वारा आदेश"।

यहां पूरी क्वेरी है जो मुझे परेशानी दे रही है:

    query.CommandText = "DECLARE @sql varchar(max);"
query.CommandText = query.CommandText + " DECLARE @cond varchar(max);"
query.CommandText = query.CommandText + " SET @cond = replace(replace(@search, """", """""")," ",""" and """);"
query.CommandText = query.CommandText + " SET @sql = "SELECT distinct datawarehouse.dbo.orderformdump.itemno, basedescription,upc,CAST((SELECT [UNITPRICE] FROM PPPLTD.dbo.[ICPRICP] WHERE [ITEMNO] = replace([DataWarehouse].[dbo].[ORDERFORMDUMP].[ITEMNO],""-"","""") AND [PRICELIST] = (select top 1 priclist from PPPLTD.dbo.ARCUS where IDCUST = (select top 1 CUSTID from PPPLTD.dbo.WEBLOGINACCESS where [USER] = """ + Session("Username") + """)) and [CURRENCY] = ""CDN"" and DPRICETYPE = 1) AS DECIMAL(18,2)),caseqty, qty AS userquantity FROM [DataWarehouse].[dbo].[ORDERFORMDUMP] LEFT JOIN pppltd.dbo.weboeordd ON pppltd.dbo.WEBOEORDD.ITEMNO = REPLACE(datawarehouse.dbo.ORDERFORMDUMP.ITEMNO,""-"","""") and orduniq not in (select orduniq from pppltd.dbo.weboeordsubmit) and WEBOEORDD.ORDUNIQ in (select orduniq from pppltd.dbo.weboeordh where [user] = """ + Session("Username") + """) where (allowinbc = ""Yes"" or allowinab = ""Yes"") ""
query.CommandText = query.CommandText + " SET @sql = @sql + "and (contains((basedescription, category, datawarehouse.dbo.orderformdump.description, itembrand, itemgroup, itemname, datawarehouse.dbo.orderformdump.itemno, itemsubtype, itemtype, subcat, upc), """"" + @cond + """"") OR REPLACE(ITEMBRAND, """""", """") LIKE ""%" + @search + "%"" ""
query.CommandText = query.CommandText + " SET @sql = @sql + "or (select top 1 1 from PPPLTD.dbo.ICITEMO where OPTFIELD like ""UPC%"" and VALUE like ""%" + replace(@search, """", """""") + "%""""
query.CommandText = query.CommandText + " SET @sql = @sql + "and ITEMNO = DataWarehouse.dbo.ORDERFORMDUMP.itemno) is not null) order by DATAWAREHOUSE.dbo.ORDERFORMDUMP.BASEDESCRIPTION""
query.CommandText = query.CommandText + " EXECUTE (@sql)"

मैंने कथन प्रिंट करने का प्रयास किया है और मैं अभी भी यह नहीं ढूंढ सकता कि मेरी त्रुटि कहां है।

मैं 6 वें लाइन के अंत में एसक्यूएल की नई लाइन जोड़ रहा हूं।

धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

बदलने का प्रयास करें REPLACE(ITEMBRAND, """""", """") सेवा मेरे REPLACE(ITEMBRAND, """""""", """")

एक और जोड़ा गया ", तो इसके बजाय REPLACE(ITEMBRAND ,""" ,"") लौटाया जा रहा है, यह लौटता है REPLACE(ITEMBRAND ,"""" ,"")


संबंधित सवाल
सबसे लोकप्रिय