• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 165
  • Last Modified:

Query not working with number

I'm trying to make a query that will select records

where category = restaurant, restaurant and bar, etc (see below)
AND
24hour = True

I had a previous recordset but instead of 24hour = True  best = true: which works fine (SQL below)

SELECT *
FROM entertainment
WHERE category in ('Restaurant' , 'Restaurant and Bar', 'Restaurant and Club', 'Restaurant, Bar and Club') AND best = True
ORDER BY ID DESC

When I change "best = true" to "24hour = true" I get error "Syntax error (missing opperator)" I assume this is becasue "24hour" starts with a number or some other small problem with my syntax. Below is what I have. Does anyone know what I'm din wrong?

SELECT *
FROM entertainment
WHERE category in ('Restaurant' , 'Restaurant and Bar', 'Restaurant and Club', 'Restaurant, Bar and Club') AND 24hour = True
ORDER BY ID DESC
0
elliottbenzle
Asked:
elliottbenzle
  • 2
  • 2
2 Solutions
 
RouchieCommented:
Not sure which database you're using, but SQL Server doesn't use True/False.  It uses a bit field instead which is 1/0
It obviously depends on how you designed the tables, but you should always use a bit field for true/false values, in which case your query becomes this:

SELECT *
FROM entertainment
WHERE
     (category in ('Restaurant' , 'Restaurant and Bar', 'Restaurant and Club', 'Restaurant, Bar and Club')) AND
     (24hour = 1)
ORDER BY ID DESC
0
 
elliottbenzleAuthor Commented:
Rouchie,

Thanks, I'm using an Access database. I fixed the problem by changing the name of the column from "24hour" to "twentyfourhour Any idea why the query won't work when it starts with a number?
0
 
RouchieCommented:
Probably because Access automatically reads the start of the word (the numbers) and presumes it's a number, then throws an error.  24hour may even be the name of a built-in time function in access.  This is the most common cause of problems.

In SQL you can wrap braces around the column name to force it to read correctly:  

SELECT *
FROM entertainment
WHERE
     (category in ('Restaurant' , 'Restaurant and Bar', 'Restaurant and Club', 'Restaurant, Bar and Club')) AND
     ([24hour] = 1)
ORDER BY ID DESC
0
 
dodge20Commented:
Actually I believe access uses -1,0 for yes/no fields.

-1 means yes
0 means no
0
 
dodge20Commented:
My previous comment only applies if you have your acces field set to type yes/no. If it is a text field, you can ignore it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now