Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для DrDragoN
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 163

Одно поле разбить на два

01.03.2012, 11:09. Показов 1272. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как реализовать средстави SQL такое?

FAM
Иванов Иван

разбить на два поля:

FAM | IM
Иванов | Иван
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2012, 11:09
Ответы с готовыми решениями:

В одно поле несколько значений
Здравствуйте! Пишу программу учёта столовой, в которую ходят клиенты из разных фирм. Такой вопрос возник. Вот когда кассир на кассе...

Подскажите пожалуйста, нужно разбить одно поле на три части
Есть поле "ФИО" нужно разбить на три поля (Фамилия, Имя, Отчество) и перенести данные соответственно. Как это осуществить?

Два внешних ключа на одно и то же поле
Здравствуйте! Есть таблица, в которой есть такие два столбца, которые указывают на один и тот же столбец в другой таблице с помощью...

6
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
01.03.2012, 11:28
Зависит от СУБД. В каждой из них есть свои функции для работы со строками
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
01.03.2012, 11:38
Смотря какой SQL. В оракле например так:

Oracle 11 SQL
1
2
SELECT name,SUBSTR(name,1,INSTR(name,' ',1)-1),
  SUBSTR(name,INSTR(name,' ',1)+1,LENGTH(name)-INSTR(name,' ',1)) FROM userlist
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
01.03.2012, 11:43
Попроще можно
SQL
1
2
3
4
SELECT 'Иванов Вася',
       SUBSTR('Иванов Вася', 1, INSTR('Иванов Вася', ' ')-1),
       SUBSTR('Иванов Вася', INSTR('Иванов Вася', ' ')+1)
FROM dual
1
 Аватар для DrDragoN
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 163
01.03.2012, 12:17  [ТС]
Записей тысяча + DBF + Каждую запись в таблице.

Я могу через цикл все сделать с TTable, но на этом форуме меня переубедили использовать TTable, поэтому SQL использую. Но не могу понять как сделать?

Добавлено через 23 минуты
Не работает
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
01.03.2012, 13:16
RTFM, в Local SQL напильнимчка типа 'InStr' не емеется, только рашпили и ножовки Посему только на клиенте. Например так:
Запрос
Select ..., FIO, FIO as FIO1, FIO as FIO2 ...

На клиенте создаем и пишем обработчики:

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Table1FIO1GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text := Copy(Text,1,Pos(' ',Text)-1);
end;
 
procedure TForm1.Table1FIO2GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text := Trim(Copy(Text,Pos(' ',Text)+1,Length(Text)-Pos(' ',Text)));
end;
Добавлено через 2 минуты
Delphi
1
Я могу через цикл все сделать с TTable
Не надо !!! Пользоваться TTable - это такой же моветон как, например, поздравлять молодых на свадьбе матом
0
 Аватар для DrDragoN
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 163
02.03.2012, 05:53  [ТС]
Ну все же через цикл сделал, быстро так то обработал все строки - может есть еще варианты?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Q1.SQL.Clear;
Q1.SQL.Add('SELECT FFAM, FAM, IM, OT FROM "FAM.DBF"');
Q1.Open;
 
while not Q1.Eof do
begin
 
TextD := TStringList.Create;
TextD.Text := stringReplace(Q1.FieldByName('FFAM').AsString, ' ', #13#10, [rfReplaceAll]);
 
Q1.Edit;
 
for U := 0 to TextD.Count - 1 do
begin
 
if TextD.Count > 1 then
begin
if U = 0 then Q1.FieldByName('FAM').AsString := TextD[U];
if U = 1 then Q1.FieldByName('IM').AsString := TextD[U];
if U = 2 then Q1.FieldByName('OT').AsString := TextD[U];
end;
end;
 
TextD.Free;
Q1.Post;
Q1.Next;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2012, 05:53
Помогаю со студенческими работами здесь

Можно ли использовать два внешних ключа на одно и тоже поле таблицы?
Например есть таблица Пользователь с соответствующим id и таблица Сообщение. В последней должны быть внешние ключи на отправителя и...

Как разбить одно число HEX число на два числа HEX ?
Задача в том, что бы одно число в виде HEX (к примеру 0xD681) разбить на 2 числа HEX (из 0xD681 - > 0xD6 и 0x81) именно что бы вот так...

Необходимо сделать так, чтобы в одно поле для ввода числа, можно было записать два числа и вывести ответ...
Такое дело, выводится калькулятор в графическом окне. Задание сделать так, чтобы в одно поле для ввода числа, можно было записать два...

в Access создать два поле,в одно из них будет записываться какое то слово,а в другом при нажатии кнопки будет определяться количество символов
Помогите пожалуйста,нужно в Access создать два поле,в одно из них будет записываться какое то слово,а в другом при нажатии кнопки будет...

При вводе в одно поле, текст должен появляться в другом поле
как это сделать напомните пожалуиста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru