Могу ли я, чтобы моя таблица создавала данные автоматически, основываясь на разных данных в одной и той же записи? - PullRequest
0 голосов
/ 19 июля 2011

Скажем, моя таблица содержит два атрибута (столбца). «Число» и «Число в словах». Могу ли я иметь его так, чтобы всякий раз, когда я вставляю данные «1» в столбец «Число», таблица mysql автоматически заполняет «один» в столбце «Число в словах» в той же записи? Когда я вхожу в «3», таблица MySQL автоматически заполняет «три» в столбце «Число в словах». От 4 до 4, от 5 до 5 и т. Д.

Кстати, не втягивайся в мой пример. Я не хочу, чтобы способ перевести числа в форму слова; Я действительно просто ищу способ создать оператор if в некотором роде. Мне нужно было бы заранее установить правила, чтобы «1» получал «один», «2» - «два» и т. Д.

Надеюсь, это имеет смысл, поскольку я очень мало знаю о MySQL.

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Вы должны быть в состоянии сделать это с After Insert Trigger. Вот пример триггера после вставки:

http://www.roseindia.net/sql/trigger/mysql-trigger-after-insert.shtml

Триггер создания MySql

Если вы знаете правила до вставки, как вы указали в своем вопросе, то я бы использовал триггер.

0 голосов
/ 19 июля 2011

Другой вариант - оператор CASE.Это действительно в SQL Server, должно работать аналогично в MySQL:

DECLARE @num INT

SET @num = 1

INSERT INTO MyTable (Number, NumInWords)
SELECT @num, CASE   WHEN @num = 1 THEN 'One'
                    WHEN @num = 2 THEN 'Two'
                    WHEN @num = 3 THEN 'Three'
                    WHEN @num = 4 THEN 'Four'
                    WHEN @num = 5 THEN 'Five'
                    WHEN @num = 6 THEN 'Six'
                    WHEN @num = 7 THEN 'Seven'
                    WHEN @num = 8 THEN 'Eight'
                    WHEN @num = 9 THEN 'Nine'
                    WHEN @num = 0 THEN 'Zero'
                    ELSE NULL
                    END
0 голосов
/ 19 июля 2011

Вы можете создать функцию с логикой и использовать ее в качестве второго столбца:

select number, number_to_words(number) as words
from t

БОЛЬШЕ РАЗРАБОТАНО:

Как создать функцию, используя слегка модифицированный код из ответа JNK:

create function number_to_words (num int)
returns varchar(100) deterministic

return case num
    when 1 then 'one'
    when 2 then 'two'
    when 3 then 'three'
    when 4 then 'four'
    when 5 then 'five'
    when 6 then 'six'
    when 7 then 'seven'
    when 8 then 'eight'
    when 9 then 'nine'
    when 0 then 'zero'
    else null
    end
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...