Как в sqlite сделать запрос, чтобы из полного ФИО получить сокращенное?
Как в sqlite сделать запрос, чтобы из полного ФИО (фамилия, имя и отчество) получить на выходе сокращенное ФИО (фамилию и инициалы)?
В ячейке t_name указано полное ФИО (фамилия, имя и отчество)
Функция
conn = sqlite3.connect(settings.DATA_BASE)
cursor = conn.cursor()
sql = f"""SELECT data, para, idgroup, subj_name, t_name, t_aud
FROM subs
WHERE strftime('%Y-%m-%d', data) = strftime('%Y-%m-%d', 'now', 'localtime') AND lower(t_name) like ?
ORDER BY para ASC"""
query = "%{}%".format(message.text.casefold())
query = query.title()
cursor.execute(sql, (query,))
result = cursor.fetchall()
if not result:
msg = f"Не має замін для <b>{message.text}</b>."
bot.send_message(message.from_user.id, msg, reply_markup=teacher, parse_mode='HTML')
return
else:
for ln in result:
msg = f"? Лента: {ln[1]}\n" \
f"? Группа: {ln[2]}\n" \
f"? Предмет: {ln[3]}\n" \
f"? Преподаватель: {ln[4]}\n" \
f"? Кабинет: {ln[5]}\n"
bot.send_message(message.from_user.id, msg, reply_markup=teacher, parse_mode='HTML')
conn.commit()
conn.close()
Ответы (1 шт):
Автор решения: Last_Arkhangel
→ Ссылка
Вот такой в итоге получился запрос
sql = f"""SELECT data, para, idgroup, subj_name,
SUBSTR(t_name, 1, INSTR(t_name, ' ')-1) as f_name,
SUBSTR(t_name, INSTR(t_name, ' ')+1,1) as l_name,
SUBSTR(t_name, INSTR(SUBSTR(t_name, INSTR(t_name, ' ')+1), ' ')+ INSTR(t_name, ' ')+1,1) as o_name,
t_aud
FROM subs
WHERE strftime('%Y-%m-%d', data) = strftime('%Y-%m-%d', 'now', 'localtime') AND lower(t_name) like ?
ORDER BY para ASC"""