How to specify SQL escape character

The percent (%) and underscore (_) character have special meaning in SQL,
and I want to escape these so users cannot type them in and effect the
queries. The database is DB2, which does not have a default escape
character, but one can be specified in an "escape" clause, like this:
select * from customer where name like 'ERIC\%' escape '\'
This query will look for a row where the name is literally equal to
'ERIC%'. This brings me to my question:
How do I specify to Kodo that it adds the "escape" clause to the end of
the SQL?
Thanks,
Eric

How do I specify to Kodo that it adds the "escape" clause to the end of
the SQL?Unfortunately there is no easy way to do this. The only way I can think of off
the top of my head is to create a subclass of the appropriate DBDictionary for
your database (see src/kodo/jdbc/sql/) and override the DBDictinoary's
toSelect(SQLBuffer, SQLBuffer...) method to add the escape clause. You can then
plug your custom dictionary into kodo:
kodo.jdbc.DBDictionary: your.custom.class.Name

Similar Messages

  • How to specify Sql Loader input file with dynamic name

    The input file name likes pochange_YYYYMMDD.dat which is generated by other program each day.
    I want to load this file to a table.
    Any help? Thanks a lot

    I thought in an excellent strategy to do this:
    Conditions:
    - you have to have only one file in the folder with the data.
    - Independently of the name of that file. A process is always going to change its name to a fix name.
    - the controlfile must at another fixed path
    the scripts is this one:
    joel_sqlloader.bat
    ren *.dat always.txt
    sqlldr <user>/password data=always.txt control=<another_path>/my_ctl.ctl
    - In a folder you will have these files:
    * joel_sqlloader.bat
    * pochange_YYYYMMDD.dat
    - In another folder you will have:
    * my_ctl.ctl
    Did you get it ?
    Joel Pérez
    http://otn.oracle.com/experts

  • Escape character for apostrophe ' in JDBC receiver channel

    Hi all,
    We have Proxy to JDBC scenario in our project. This interface is working fine with unicode data but when there is an apostrophe( ' ) coming in any of the field values ( ex: DOWTHERM 'J' MODEL19QAGB1G ) , the message is failing in receiver JDBC channel.
    can anyone please tell us how to handle single quote in JDBC receiver channel.
    I have read in SAP help documentation that apostrophe is a reserved character in SQL syntax and is therefore replaced by an escape character if it occurs within value strings. There is a option to JDBC receiver communication channel under "SQL SYNTAX PARAMETER"  to specify the escape character for apostrophe.
    Can any please tell us which value needs to be maintained in the channel to avoid this error.
    Regards
    Jagruthi

    Hi Prateek,
    Thanks a lot for you inputs.
    This issue is solved now. We have replaced single quote with two single quotes and then did the hasQuote mapping as described in the blog.
    /people/prateek.srivastava3/blog/2009/04/02/unicode-handling-for-ms-sql-server
    No value needs to be maintained in channel(SQL SYNTAX PARAMETER ).
    But just want to understand  the difference between replacing the ' with '' in mapping and using SQL SYNTAX PARAMETER option in communication channel.
    Both should ideally result in same  output. But it didnu2019t work when we tried with two single quotes in SQL SYNTAX PARAMETER (Escape Symbol for Apostrophe) in communication channel without doing anything in mapping.
    Regards
    Jagruthi

  • What is the escape character for DOT in java regex?

    How to specify a dot character in a java regex?
    . itself represents any character
    \. is an illegal escape character

    The regex engine needs to see \. but if you're putting it into a String literal in a .java file, you need to make it \\., as Rene said. This is because the compiler also uses \ as an escape character, so it will take the first \ as escaping the second one, and remove it, and the string that gets passed onto the regex will be \.

  • How to use sql wildcards

    I am using the Labview SQL sub-set and am trying to construct an sql query using wildcards. ie LIKE 'Pass*' However, none of the MS Access Driver wildcards appear to work with the SQL sub-set. Any suggestions?

    Hi,
    I have some links for you. The first linke gives you info how you Specify a Wildcard Character with the SQL Toolkit and the second one is about "Using the LIKE keyword in a SQL query ". I hope it helps.
    http://digital.ni.com/public.nsf/websearch/8854A9FF0CB48A71862566020067BD09?OpenDocument
    http://forums.ni.com/ni/board/message?board.id=250&message.id=4926&requireLogin=False
    TN

  • How to use escape character in update statement.

    Hi All,
    I'm trying to update table using following sql update statement, but everytime it's asking me for the input due to the '&' value in below sql.
    UPDATE xyz_xyz
       SET NAME = 'ABC & PQR'
    WHERE ID = (SELECT ID
                   FROM abc_abc
                  WHERE NAME = 'C & PQR');Please let me know how to use escape character syntax or let me know if there is any alternative solution.
    Thanks,
    Vishwas

    Hi,
    By default, & marks a substitution variable name.
    If you're not using substitution variables in that statement (or, if this is in PL/SQL, in that entire package or procedure) then the easiest thing to do is just diable substitution variables; then & will be a normal character:
    SELECT  DEFINE  OFF
    UPDATE xyz_xyz
       SET NAME = 'ABC & PQR'
    WHERE ID = (SELECT ID
                   FROM abc_abc
                  WHERE NAME = 'C & PQR');
    SET  DEFINE  ONIf you can't do that, then & is always taken literally if it comes right before a single-quote, so you could say:
    UPDATE xyz_xyz
       SET NAME = 'ABC &' || ' PQR'
    WHERE ID = (SELECT ID
                   FROM abc_abc
                  WHERE NAME = 'C &' || ' PQR');There is a SQL*Plus "SET ESCAPE" command, too, but if you use it, you have to worry about whether the escape character is to be taken literally or not.
    SET   ESCAPE  \Yet another alternative is to make some other character, such as ~, mark the substitution variables:
    SET  DEFINE  ~Read all about them in the SQL*Plus manual.
    http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch2.htm#sthref103

  • How to escape "&" character ?

    I want to execute the following statement in sqldeveloper
    select '&sdfas' from dual
    and expect the outcome to be the string "&sdfas"
    but sqldeveloper keep asking me for the value of "sdfas" argument, and replace it.
    I use sqldeveloper to run sql script to patch many pl/sql packages in my company. The packages, unfortunately, contain some "&" characters in rather critical position. And my last few days is spent chaotically trouble-shooting this.
    Any method to escape "&" character ? I tried to export DDL with sqldeveloper itself but the outcome is still not being escaped properly.

    Sake,
    You can use the following to escape the &:
    set define off
    It's also possible to set another character to use for substitution variables.
    See the online documentation: http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch12040.htm#i2698854

  • Why isn't SQL+ liking my escape character?

    I'm trying to right a script that utiilizes the escape character in the PROMPT statement.
    I have tried to reset the escape character to * or ! and the output comes out funky.
    Here's what happens:
    ttThis is the original.
    This output is the result of the lines:
    SET ESCAPE !
    PROMPT !t!tThis is the original.
    What seems to be the problem? Can someone please help?

    SET ESCAPE sets a charater that will escape the special meaning of some characters in sqlplus.
    SQL> SELECT 'Ben & Jerry' FROM dual;
    Enter value for jerry:
    SQL> SET ESCAPE \
    SQL> SELECT 'Ben \& Jerry' FROM dual;
    'BEN&JERRY'
    Ben & JerryI'm not aware of any way to "format" the output of PROMPT, since sqlplus always trims the spaces.
    John

  • Can Linux recognize the escape character?

    Hi,
    It's possible that this problem doesn't belong here. But please give it a try.
    I am developing an project using JSP. It includes image uploading. after image uploading, I use a javascript function popUp(url, ...) to open a new window and display this image. The very strange thing is that, sometimes the link can work, open a new window and display the image while sometimes the link can't work, or it only works for one time, then it fails. I couldn't find the reason yet. it works on IE, and not on Netscape and also not work on Linux OS while do work on Window2000. Can somebody take a look at the following link and tell me how to change it to make sure it is work on Linux OS and netscape. What's the difference between OS and windows to specify a String(that is, url of a link). The linux OS seems interperte \" to ", so it cannot recognize the full url.
    The link is :
    imageLink[i] = "<a href='showForm' onclick=\"popUp('" + request.getContextPath() + "/displayForm.jsp?filename=" + sdb.getImageFileName(i)+"&fileDesc=" +sdb.getImageDesc(i) + "', 'showForm', '600', '450', 'yes'); return false;\">"+sdb.getImageDesc(i)+"</a>";
    Thanks in advance!
    jmling

    Linux will recognize the escape character. It looks like you might have other difficulties with your imageLink tag. For example, I think you need to use tags when you use Java inside your html or javascript..
    onclick=\"popUp(" + <%= request.getContextPath() %> + "/displayform.jsp?...

  • Escape Character in ODBC Connections?? HELP!

    Hi All,
    I have a problem : we have a C++ app here that is supposed to attach to an Oracle 8i or 9i database here via a standard ODBC connection.
    When this app attempts to do something like this:
    INSERT INTO MyTable (MyRow) Values('[testing]')
    it fails - it does not like the square brackets in the command. when I copy this into SQL Plus, of course, it runs just fine.
    the ODBC link also doesn't like this:
    INSERT INTO MyTable (MyRow) Values('/[testing/]') either
    or this:
    INSERT INTO MyTable (MyRow) Values('[[testing]]') either
    or this:
    INSERT INTO MyTable (MyRow) Values('`testing`') either
    in fact, it appears the following are all reserved characters that oracle's ODBC driver can't handle:
    ` ' " \ / [ ]
    My questions are :
    1) Can I find a definitive list of these (Oracle documentation is good on reserved WORDS, but poor on reserved CHARACTERS)
    2) what can I use to set an escape character within my ODBC SQL? Is this something I can tweak on the ODBC DSN cofiguration? I know in SQL*Plus you can just say
    SET ESCAPE ON
    SET ESCAPE "\"
    But you can't do that on every SQL Query getting sent through ODBC can you?
    Please help!
    I

    Thanks, but thats not really answering the two
    questions I posed, is it? Well you are asking the wrong questions.
    The quoted example was just
    that, an example. The actual app is calling stored
    procedures and not doing simple SQL statements. Using
    bound variables is not really an option because the
    number and type of parameters being sent down change
    continually. This is no reason to not use bind variables. If you do not use bind variables and this is an OLTP database then scaling will not be an option for your application. It can also raise potential security holes due to SQL injection.
    The site you quoted is to do with
    obtaining recordsets back from stored procedures. We
    do not need to obtain recordsets back from stored
    procedures. Yes and it also shows how to bind input variables in ODBC calls, does the presence of record sets somehow render this invisible?
    >
    shall I repeat myself:-
    My questions are :
    1) Can I find a definitive list of these (Oracle
    documentation is good on reserved WORDS, but poor on
    reserved CHARACTERS)
    As you can run the command in SQL*Plus it should indicate that it is not a reserved character as far as Oracle is concerned. Therefore looking in the Oracle documentation will not get you anywhere. You will need to refer to the documentation for your ODBC driver and the ODBC specification.
    2) what can I use to set an escape character within
    my ODBC SQL? Is this something I can tweak on the
    ODBC DSN cofiguration? I know in SQL*Plus you can
    just say
    SET ESCAPE ON
    SET ESCAPE "\"
    I must admit I don't know.

  • How to specify  tablespace for a primary key inde in create table statement

    How to specify the tablespace for a primary key index in a create table statement?
    Does the following statement is right?
    CREATE TABLE 'GPS'||TO_CHAR(SYSDATE+1,'YYYYMMDD')
                ("ID" NUMBER(10,0) NOT NULL ENABLE,
                "IP_ADDRESS" VARCHAR2(32 BYTE),
                "EQUIPMENT_ID" VARCHAR2(32 BYTE),
                "PACKET_DT" DATE,
                "PACKET" VARCHAR2(255 BYTE),
                "PACKET_FORMAT" VARCHAR2(32 BYTE),
                "SAVED_TIME" DATE DEFAULT CURRENT_TIMESTAMP,
                 CONSTRAINT "UDP_LOG_PK" PRIMARY KEY ("ID") TABLESPACE "INDEX_DATA"
                 TABLESPACE "SBM_DATA";   Thank you
    Edited by: qkc on 09-Nov-2009 13:42

    As orafad indicated, you'll have to use the USING INDEX clause from the documentation, i.e.
    SQL> ed
    Wrote file afiedt.buf
      1  CREATE TABLE GPS
      2              ("ID" NUMBER(10,0) NOT NULL ENABLE,
      3              "IP_ADDRESS" VARCHAR2(32 BYTE),
      4              "EQUIPMENT_ID" VARCHAR2(32 BYTE),
      5              "PACKET_DT" DATE,
      6              "PACKET" VARCHAR2(255 BYTE),
      7              "PACKET_FORMAT" VARCHAR2(32 BYTE),
      8              "SAVED_TIME" DATE DEFAULT CURRENT_TIMESTAMP,
      9               CONSTRAINT "UDP_LOG_PK" PRIMARY KEY ("ID") USING INDEX TABLESP
    ACE "USERS"
    10               )
    11*              TABLESPACE "USERS"
    SQL> /
    Table created.Justin

  • How to use SQL functions in the queries

    hey guys i wanna know how to use SQL functions in the queries is it possible or not .

    Hi,
    Wat exactly that set values are?
    those from sql query?
    How to use count():
    The COUNT() function returns the number of rows that matches a specified criteria.
    SQL COUNT(column_name) Syntax
    The COUNT(column_name) function returns the number of values (NULL values will not be counted) of the specified column:
    SELECT COUNT(column_name) FROM table_name
    SQL COUNT(*) Syntax
    The COUNT(*) function returns the number of records in a table:
    SELECT COUNT(*) FROM table_name
    SQL COUNT(DISTINCT column_name) Syntax
    The COUNT(DISTINCT column_name) function returns the number of distinct values of the specified column:
    SELECT COUNT(DISTINCT column_name) FROM table_name
    The IN function helps reduce the need to use multiple OR conditions.
    The syntax for the IN function is:
    SELECT columns
    FROM tables
    WHERE column1 in (value1, value2, .... value_n);

  • Query of Queries (QofQ) Escaped Character Problem

    Hello All,
    I'm trying to run a query or queires (QofQ) and I'm doing a
    LIKE comparison that looks for bracket characters ([ ]) within a
    string, however ColdFusion is ignoring the brackets. How can I
    escape the bracket character? So far I have only been able to
    escape the percent sign based on the ColdFusion Live Docs. The
    error message I get when I run the query below is:
    Invalid Escape Sequence. Valid sequence pairs for this escape
    character are: "\%", or "\_".
    Here is the query:
    <cfquery dbtype="query" name="getLogs">
    SELECT *
    FROM GetLogs
    WHERE Description LIKE '%\[User:#UserID#\]%' ESCAPE '\'
    </cfquery>
    Thanks for your help!

    You are correct. If you leave the brackets in the LIKE
    statement, it will return results as if the brackets weren't there
    at all.
    Perhaps I need to figure out the ASCII character value of the
    bracket and include it that way i.e. #Char(?)# where the question
    mark would be the numerical value of that character.
    My temporary solution has been to leave off the starting
    bracket:
    <cfquery dbtype="query" name="getLogs">
    SELECT *
    FROM GetLogs
    WHERE Description LIKE '%user:#UserID#]%'
    </cfquery>
    This has (so far) returned the results i'm looking for
    although its not as 100% accurate without that beginning [ in the
    LIKE statement.

  • Bypass Adapter URI Endpoint with Escape Character for Web Service

    Dear All,
    I would like to apply by pass adapter URI Endpoint for XI webservice, the default format is
    http://<host>:<port>/sap/xi/engine?type=entry&version=3.0&Sender.Service=<BusinessService>&Interface=<namespace>^<Outbound Interface name>
    If I am using format using with carat () character then there has no problem to the service, but consumer doesn't support carat () character. I instead the carat (^) with URL Escape Character (%5E)
    http://<host>:<port>/sap/xi/engine?type=entry&version=3.0&Sender.Service=<BusinessService>&Interface=<namespace>%5E<Outbound Interface name>
    Then error occurred
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>RCVR_DETERMINATION.MESSAGE_INCOMPLETE</code>
                   <text>Message is incomplete. No Sender found</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    How to resolve this error...
    Thank you.
    Regards,
    Weng

    Hi ,
    as per my knowledge.....................
    When you create a WSDL with the help of a wizard. In the Integration Directory, choose Tools -> Define Web Service to enter the wizard.
    On Propose URL button, as this genertated URL default Point to Entegration Engine.. SO already proformance wise Good.
    If You want to Point your URL to adapter engine , use below given URL this will point ur incoming soap  message to SOAPadapter sender channel
    http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet?channel=:<service>:<channel>.
    Regards
    Prabhat Sharma.

  • [Forum FAQ] Troubleshooting error "The specified SQL server instance is not valid" when installing SCOM reporting service

    Symptom
    If you have failed to install SCOM reporting service, you may encounter below error when you reinstall it:
    “The specified SQL server instance is not valid”.
    (Figure 1)
    Figure 1.
    Reason
    This issue may be caused by multiple reasons, for example the reasons in Figure 1.
    However, you may find that SSRS and Report Server website are configured correctly and no SSL or proxy Server is used. In these scenario, you can open the log file under path
    to find the root reason:
    C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\LogFiles
    Later, you will find the error as below:
    ERROR: Throwing Microsoft.ReportingServices.Library.ReportServerDisabledException: , Microsoft.ReportingServices.Library.ReportServerDisabledException:
    The report server cannot decrypt the symmetric key that is used to access sensitive or encrypted data in a report server database. You must either restore a backup key or delete all encrypted content. ---> System.Runtime.InteropServices.COMException
    (0x80090016): Keyset does not exist (Exception from HRESULT: 0x80090016)
    at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
    at RSManagedCrypto.RSCrypto.ReencryptSymmetricKey(Byte[] symKeyBlob, Byte[] pPublicKeyBlob)
    at Microsoft.ReportingServices.Library.ConnectionManager.<GetEncryptionKey>b__2()
    --- End of inner exception stack trace ---;
    Solution
    According to the error message, you can delete encrypted content by following the steps below:
    Open SQL Reporting Services Configuration Manager.
    Select “Encryption Keys”.
    Click “Delete” to delete all encrypted content. (Figure 2)
    Figure 2.
    After that, we can install SCOM reporting service again, after successfully install reporting service, we should see the SCOM operation console as below:
    Figure 3.
    In addition, you may also encounter other errors when installing SCOM reporting service, and the troubleshooting steps may be different. However, we can also check SQL reporting
    service logs to find the root reason.
    Here are some articles that would be helpful for SCOM reporting service installation and troubleshooting:
    How to Install the Operations Manager Reporting Server
    http://technet.microsoft.com/en-us/library/hh298611.aspx
    Unable to install SCOM 2012 Reporting Services
    http://blogs.technet.com/b/mdegre/archive/2013/05/27/unable-to-install-scom-2012-reporting-services.aspx
    Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.

    Hello,
    I'm afraid you must use a dedicated instance of SQL Server for each site(SCOM/SCCM). Some similar issues were disscussed on this forum:
    SCCM and SCOM - SQL Server 
    http://social.technet.microsoft.com/Forums/en-US/configmanagergeneral/thread/bfa14da9-4692-4c64-a107-e085c967d259
    SCOM, SCCM, SQL on same server?
    http://social.technet.microsoft.com/Forums/en-US/configmgrsetup/thread/b5373aa7-5233-4b1f-9b39-b86e481e04d5
    Thanks,
    Yog Li
    TechNet Community Support

Maybe you are looking for