Проверить, что значение является строкой

pilot911

Новичок
Проверить, что значение является строкой

Друзья, возникла необходимость определить, что значение в поле - не число, а строка

как это сделать средствами мускуля ?
 

zerkms

TDD infected
Команда форума
ты можешь это определить статически по типу поля. не?
 

pilot911

Новичок
нет, дело в том, что я получил для импорта старый дамп, где все значения свойств свалены в одно поле char

так, подумал и решил сделать через пхп :)
 

Mols

Новичок
1. привести в числовой тип.
2. полученное число перевести в строковый.
3. сравнить длину этой новой строки с длиной исходной.
Если совпадает - знач число.
или регуляркой.
 

Beavis

Banned
Автор оригинала: Mols
1. привести в числовой тип.
2. полученное число перевести в строковый.
3. сравнить длину этой новой строки с длиной исходной.
Если совпадает - знач число.
По твоему алгоритму буква "А" это число..

-~{}~ 06.09.09 22:09:

и вообще изначально был вопрос как это сделать в MySQL, в PHP то это делается множеством разных способов
 

Mols

Новичок
угу. прикольно))) не подумал. Ну думаю тогда можно на шаге 2. просто выполнить не строгое сравнение. По идее должно отработать.

-~{}~ 06.09.09 21:11:

Да... и про мускл я тоже прогнал. В общем сорри если что.
 

pilot911

Новичок
мускулем не решился, показалось сложно

в пхп делается просто - через функции is_integer() is_double() is_string()
 

pilot911

Новичок
это реально - регулярку можно составить, взяв примеры на этой http://ru.php.net/manual/en/function.is-numeric.php странице

а я пользуюсь этим, может кому пригодится

PHP:
if (is_numeric($a))	{
						
	if (((string)$a === (string)(int)$a) )	{.... //целое
	
	else 	$a // дробное
 

Mols

Новичок
ну то... что если важны эти лидирующие нули(и вообще возможны такие строки) - надо таки учесть эту особенность is_numeric.
 

FractalizeR

Новичок
Re: Проверить, что значение является строкой

Автор оригинала: pilot911
Друзья, возникла необходимость определить, что значение в поле - не число, а строка

как это сделать средствами мускуля ?
[SQL]SELECT CAST('ABCDEFG' AS SIGNED)[/SQL]
Если возвращает 0, то параметр либо сам 0, либо не-число. Вместо SIGNED можно брать DECIMAL, если нужна проверка и на вещественные числа
 
Сверху