Sql query with special characters - how to handle?

前端 未结 5 1003
南方客
南方客 2021-01-06 16:53

I\'ve few emp names like

  1. john,1
  2. devil\'s
  3. corn

something like this

Now when

相关标签:
5条回答
  • 2021-01-06 17:28

    This assumes you have 3 discrete names in your example string

    Exact match. you need to double up quotes.

    select * from emp where
    empname IN ('john,1' , 'devil''s', 'corn')
    

    You can't LIKE/IN in SQL Server too.

    select * from emp where
      empname like '%john,1%'
      OR
      empname like '%devil''s%'
      OR
      empname like '%corn%'
    
    0 讨论(0)
  • 2021-01-06 17:28

    For most versions of SQL, you need to escape the single quote, for example.

    select * from emp where empname like ('john,1,devil''s,corn')
    

    Also, the above example is looking for a very specific string value, you need to include * or ? as wildcard characters, so to look for all empname's like devil's, use

    select * from emp where empname like '%devil''s%'
    

    Another example

    select * from emp where empname like 'john,1%'
    
    0 讨论(0)
  • 2021-01-06 17:35

    if you use mysql:

    select * from emp where empname like ('john,1','devil\'s','corn')
    
    0 讨论(0)
  • 2021-01-06 17:38
    select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'
    

    use keyword escape to mention escape character for the query.

    0 讨论(0)
  • 2021-01-06 17:44

    If you are looking for an empname of "devil's" then I agree with the use of the escape character that Sachin and Ratinho used.

    However, the like clause is used for something that is like another. For example, if you are looking for something that starts with "devil's" then you might use

    select * from emp where empname like ('devil\'s%')
    

    which would match

    devil's peak
    devil's beard
    devil's
    

    but not

    Devil's peak
    deviled eggs
    devil
    

    If you want to match an empname with "devil's" in the middle, then you might use

    select * from emp where empname like ('%devil\'s%')
    
    0 讨论(0)
提交回复
热议问题