Solved

How to query a table with a hyphen in the name?

Posted on 2010-09-17
12
1,871 Views
Last Modified: 2013-11-05
I have a database that has a table with a hyphen in the name (don't look at me, I didn't do it!).   Let's call the table E-Mail_Addresses.   I need to query that table.  The database is Intersystems Cache, but it accepts standard SQL queries.

I need something that looks like

SELECT * FROM [E-Mail_Addresses] WHERE Name='JohnDoe'

Except that I need it to work.  If it matters to anyone, I'm coding in VBS using ADODB and the InterSystems 5.1 ODBC driver.


Thanks!!
0
Comment
Question by:exx1976
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
12 Comments
 
LVL 92

Expert Comment

by:Patrick Matthews
ID: 33704158
Are you saying that that does not work?  Generally, you would encase "non-standard" database object names in square brackets...
0
 
LVL 15

Expert Comment

by:AmmarR
ID: 33704173
hi

if you have a hyphen in the data then you need to double it in your script

check code below

SELECT * FROM [E-Mail_Addresses] WHERE Name='''JohnDoe'''

Open in new window

0
 
LVL 8

Expert Comment

by:mustaccio
ID: 33704277
Try enclosing the table name in double quotes (this is standard SQL):

SELECT * FROM "E-Mail_Addresses" WHERE Name='JohnDoe'

Note that this makes the table name case-sensitive; if its name is in fact "e-mail_addresses" or "E-MAIL_ADDRESSES" it won't match.
0
Free eBook: Backup on AWS

Everything you need to know about backup and disaster recovery with AWS, for FREE!

 
LVL 18

Author Comment

by:exx1976
ID: 33704285
Below is the code (VBS) that I'm using.

This is the error that I get:

[SQLCODE: <-1>:<Invalid SQL statement>]
[Cache Error: <<SYNTAX>errdone+1^%qaqqt>]
[Details: <Prepare>]
[%msg: < SQL ERROR #1: `ID' expected, `[' found^SELECT * FROM [>]
Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.RecordSet")
oConn.Open "DRIVER={InterSystems ODBC};SERVER=FQDN.domain.local;DATABASE=database_name;UID=user;PWD=pwd"
If oConn.State <> 1 Then MsgBox "connect failed"
SQLCmd = "SELECT * FROM [E-Mail_Addresses] WHERE Name='JohnDoe'"
oRS.Open SQLCmd, oConn

Open in new window

0
 
LVL 18

Author Comment

by:exx1976
ID: 33704312
Mustaccio - unfortunately, no, the double quotes doesn't work.  The error is:

[SQLCODE: <-1>:<Invalid SQL statement>]
[Cache Error: <<SYNTAX>errdone+1^%qaqqt>]
[Details: <Prepare>]
[%msg: < SQL ERROR #1: `ID' expected, `:' found^SELECT * FROM :%qpar>]
0
 
LVL 8

Expert Comment

by:mustaccio
ID: 33704346
Did you escape double quotes in your double-quoted SQLCmd string?
0
 
LVL 18

Author Comment

by:exx1976
ID: 33704405
Yes.  The actual code used was

SQLCmd = "SELECT * FROM ""Co-Signer_Route_Bal"" WHERE ACCOUNT_NUM='36'"

I also tried

SQLCmd = "SELECT * FROM """"Co-Signer_Route_Bal"""" WHERE ACCOUNT_NUM='36'"

with the same result.
0
 
LVL 18

Author Comment

by:exx1976
ID: 33704413
Ok..  So now we know it's not email addresses..   LOL   Oops!  I feel like such a n00b
0
 
LVL 17

Accepted Solution

by:
StrifeJester earned 500 total points
ID: 33704676
Perhaps wherever you are getting the table name from is wrong.  Perhaps it is just and underscore and someone forgot to hold shift.
0
 
LVL 18

Author Comment

by:exx1976
ID: 33704718
That's the most ridiculous thing I've ever heard...  Let me go try it!
0
 
LVL 18

Author Comment

by:exx1976
ID: 33704750
Oops  no!!  I wanted to accept 33704676
0
 
LVL 18

Author Closing Comment

by:exx1976
ID: 33704755
Go figure, typo in the FM..
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There are some very powerful Data Management Views (DMV's) introduced with SQL 2005. The two in particular that we are going to discuss are sys.dm_db_index_usage_stats and sys.dm_db_index_operational_stats.   Recently, I was involved in a discu…
I am showing a way to read/import the excel data in table using SQL server 2005... Suppose there is an Excel file "Book1" at location "C:\temp" with column "First Name" and "Last Name". Now to import this Excel data into the table, we will use…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question