2014-08-17 3 views
0

У меня только 1 столбец в моей таблице, в этой таблице есть входы, такие как 990x70, 980x50. Мне нужны значения слева и справа от «x», чтобы рассчитать дюймы этих двух значений. С помощью этого кода я беру только последнюю зарегистрированную запись из базы данных. Как я могу получить все записи? (Примечание:. Я должен использовать переменные в этом проекте)Переменные в T-SQL

declare @Value1 numeric(18,1) 
    declare @Value2 numeric(18,1) 


    select 
    @Value2 = SUBSTRING(
     [Values], 
     CHARINDEX('x', [Values]) + 1, 
     LEN([Values])) , 

    @Value1 = SUBSTRING(
     [Values], 
     1, 
     CHARINDEX('x', [Values]) - 1) 

    from myTable 

    select @[email protected]/(2.54) 
    select @[email protected]/(2.54) 
    select @Value1,@Value2 from myTable 

Edit: Есть 4 различных размеров в моем столе, и я получаю тот же результат в 4 раза. Я хочу, чтобы получить все результаты не только 1.

enter image description here

+0

Я думаю, это домашнее задание. Первым шагом в решении этой проблемы является публикация вашей фактической проблемы. Вы получаете сообщение об ошибке или получаете неправильный номер? –

+1

На самом деле я видел этот вопрос о домашнем задании раньше, и это типичный вопрос - в этом случае нет смысла использовать переменные - см. Ответ Matthews ниже. –

+1

Основная проблема здесь в том, что схема базы данных не находится в [1NF (первая нормальная форма)] (http://en.wikipedia.org/wiki/First_normal_form "см. Википедия"), что видно из того факта, что OP должен разделить значения из одного столбца на несколько значений. – stakx

ответ

1

Теперь, правда, я не совсем ясно, что вы просите. Но это звучит как-то, как это должно работать:

SELECT CONVERT(NUMERIC(18,1), SUBSTRING([Values], CHARINDEX('x', [Values]) + 1, LEN([Values])))/2.54, 
     CONVERT(NUMERIC(18,1), SUBSTRING([Values], 1, CHARINDEX('x', [Values]) - 1))/2.54 
FROM myTable 

Это просто должны делать то же самое, что вы делаете, но без каких-либо переменных (которые, в вашем использовании, по сути одномерная).

0

Если вы должны использовать переменные, начните с этого:

declare @Delimiter varchar(1) 
declare @CMtoInches DECIMAL(19,2) 

Set @delimiter = 'x' 
Set @CMtoInches = 2.54 

и посмотреть, если вы можете работать, как интегрировать его в код Матфея.

 Смежные вопросы

  • Нет связанных вопросов^_^