How to cast a string to numeric in mysql? - mysql

I have a table with string columns. Like varchar or text.
I want to select those values as a tinyint or int. But the following fails:
SELECT CAST(example AS INT) FROM mytable
Result:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'INT) FROM mytable LIMIT 0, 25' at line 1
Why?

Try using signed or unsigned:
SELECT CAST(example AS SIGNED) FROM mytable
I find it very strange that MySQL does not support INT in this context (or lengths on strings).
Also, in MySQL, implicit conversion is often used:
SELECT (example + 0)

Related

Is there any way to return integer value from MySQL?

Is there any way to return integer value from mysql?
Select CAST(1, int) is thowing error as this "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT) limit 0,1000' at line 1"
Select CAST(0 as SIGNED) OR Select CAST(0 as UNSIGNED) both are returing BIGINT value.
I have tried different method to cast value to int.
I repost this answer
Create the function that will perform the conversion:
CREATE FUNCTION BigToInt (n BIGINT) RETURNS INTEGER RETURN n;
As you can see, the function is very short and simple: It takes a BIGINT and immediately returns it as an ordinary integer. However, one consequence of this is that some of the data will be truncated down to the largest possible value for Int.

Select ALL columns in MySQL with one column inside CAST function

I basically want to select all columns of my MySQL table, but want to change the datatype of only one column namely Patient_Number using CAST function only. Here is a screenshot of my MySQL table
So as my output, I want a similar table as I have shown in the screenshot, just want to have the datatype of Patient_Number from INT to VARCHAR.
I tried executing the following queries:
select * cast(Patient_Number as varchar) from clinic_data;
select * from clinic_data cast(Patient_Number as varchar);
But only got the following error message:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cast(Patient_Number as char)' at line 1
SELECT * is basically not a good idea
But you need a comma, between both statements
And it should be char for the cast
select *, cast(Patient_Number as char) from clinic_data;
db<>fiddle here

Mysql query order by with longtext value as int

I tried below query it giving me error. what was the error
SELECT listingsdbelements_field_value
FROM default_en_listingsdbelements
ORDER BY CAST(listingsdbelements_field_value AS INT) ASC
Query: SELECT listingsdbelements_field_value FROM
default_en_listingsdbelements ORDER BY
CAST(listingsdbelements_field_value AS INT) AS...
Error Code: 1064 You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near 'INT) ASC LIMIT 0, 1000' at line 3
Use signed or unsigned depending upon your needs.
SELECT listingsdbelements_field_value
FROM default_en_listingsdbelements
ORDER BY CAST(listingsdbelements_field_value AS UNSIGNED) ASC
From MySQL -
SIGNED Converts value to SIGNED type, which is a signed 64-bit integer
UNSIGNED Converts value to UNSIGNED type, which is an unsigned 64-bit integer

#1064 - You have an error in your SQL syntax

SQL query i'm running in phpMyAdmin :
INSERT INTO `companies`(`companyId`, `companyName`, `companyImage`)
VALUES ([1],[Example Company],[image.jpg])
phpMyAdmin generates this, i'm just changing the values.
SQL database:
1 companyId int(100)
2 companyName varchar(100)
3 companyImage varchar(100)
Error I get:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[1],[Example Company],[image.jpg])' at line 1
Use quotes, not brackets, around strings. Integers and floats don't require anything but MySQL allows quotes around those as well.
INSERT INTO `companies`(`companyId`, `companyName`, `companyImage`)
VALUES (1, 'Example Company', 'image.jpg')
Use backticks to escape column and table name.
Use quotes to limit strings.
Use nothing to limit numbers.
Don't use brackets at all in MySQL.

MySQL query with enum values

I've the following structure in MySQL 5.6.19.
CREATE TABLE `metadata` (
`md5` char(32) NOT NULL,
`match` enum('none','md5','similarity') DEFAULT NULL
)
And I got an error doing a query like this:
select * from metadata where match = 'md5';
The error is:
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near '= 'md5'' at line 1
There're multiple entries in the table and rows that could match the query. But MySQL refuse to do it. Any idea about the reason?
Thanks!
MATCH is reserved keyword in MySQL: http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-5.html. You should enclose your field name in backticks to make it work:
select * from metadata where `match` = 'md5';