Member 10506503 Ответов: 2

Как получить только числовые значения в столбце


Вставка значений в таблицу (SQL)

Id Имя Возраст
1 Викаш 56 лет
2 Мохан 26 лет
3 Оперативная память 20 лет

я хочу показать результат
Id Имя Возраст
1 Викаш 56
2 Мохан 26
3 Оперативная память 20

пожалуйста помогите мне сэр

Что я уже пробовал:

Плз сэр
выберите id, имя, возраст из tblage, где ISNUMERIC (age)=0

выбрать подстрока([возраст], функция patindex('%[0-9]%', [возраст]), лен([возраст])) как количество из [tblage];
этот запрос не работает.

2 Ответов

Рейтинг:
10

Bryian Tan

В этом сценарии есть несколько способов сделать это.

1. Как и другие члены CP, перепроектируйте схему таблицы и обновите пользовательский интерфейс, чтобы передать исправленный тип и значение в столбец
2. Вы можете попробовать один из следующих вариантов для столбца возраст, если формат всегда ## год

select id,name,LEFT(age,CHARINDEX(' ', age)-1) 'age' FROM tblage
select id,name,LEFT(age,PATINDEX('%[^0-9]%',age)-1) 'age' FROM tblage
select id,name, REPLACE(age,' year','') 'age' FROM tblage

3. Или использовать функцию SQL сервер - получить числовое значение из буквенно-цифровые строки - UDF для Вам только числовые номера - путь к власти SQL с пинал Дэйв[^]
select id,name, dbo.udf_GetNumeric(age) 'age' FROM tblage

Выход:
id	name	age
1	vikash	56
2	mohan	26
3	ram  	20


Member 10506503

спасибо сэр
работает отлично сэр

Рейтинг:
1

Peter Leow

Ваша проблема возникла из-за плохого дизайна базы данных. Ради бога, выбросьте эту таблицу и воссоздайте правильную. В кои-то веки, почему вы хотите хранить возраст, который является изменяющимся числом и выводится из даты рождения, не следует ли вместо этого хранить дату рождения в таблице? Это подводит нас к следующей проблеме: если вы хотите сохранить дату рождения, убедитесь, что вы храните ее как тип даты, а не varchar, который у вас есть для поля возраста в настоящее время. Из-за этого у вас возникают трудности с получением данных в правильной форме.