powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT
44 сообщений из 44, показаны все 2 страниц
Количество записей SELECT
    #34316605
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Здравствуйте!
Выполняю SQLExecDirect(..., "SELECT * FROM table",...).
Как мне узнать количество записей, которые вернулись?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316659
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например выполнить еще один запрос
SELECT Count(*) FROM table
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316683
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Плохо, еще раз к базе обращаться... Я сделал один раз селект и хочу узнать количество записей
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316727
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOПлохо, еще раз к базе обращаться... Я сделал один раз селект и хочу узнать количество записейтогда читай все записи с сервера и считай в процессе
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316954
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Это как?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316963
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOЭто как?в цикле Next и counter++ до конца набора данных;
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34316994
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
А понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317001
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOА понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)

Когда час пройдет, сообщи ему, чтобы пошел покурить пока. ;)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317015
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХП как вариант.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317067
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Что такое ХП?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317112
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOЧто такое ХП?

Хранимая процедура. Тебе данные не надо будет переганять. Только число.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317158
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Не очень понимаю, как она поможет... объясните по подробнее пжлста.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317220
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOА понял, но это не подходит - мне прийдется перелапатить все записи, а если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)тогда SnowMan2Например выполнить еще один запрос
SELECT Count(*) FROM table
Либо считает сервер, либо клиент, третьего не дано.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317272
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Нет, я в упор не понимаю, неужели никто не думал как это по-людски сделать? То, что вы предлагаете, и на стороне клиента, и на стороне сервера перелапачивает уже полученный набор еще раз. Должно ведь куда-то попадать результирующее количество записей. В СУДБ есть переменная @@ROWCUNT, просто у меня не получается прилепить ее к результирующему множеству. Наверняка должен быть способ, получить количество записей, не перебирая их в тупую.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317286
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOНаверняка должен быть способ, получить количество записей, не перебирая их в тупую.Строго говоря, не должен. Более того, возможны ситуации, когда это в принципе невозможно.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317305
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
В любом случае набор записей сервер вернул клиенту, почему не должно быть способа получить количество записей этого набора?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317306
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOВ любом случае набор записей сервер вернул клиенту, почему не должно быть способа получить количество записей этого набора?Сервер возвращает клиенту не весь набор записей, а ровно то количество, которое клиент запросил. Остальные записи сервер может даже не вычислять.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317318
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOНет, я в упор не понимаю, неужели никто не думал как это по-людски сделать? То, что вы предлагаете, и на стороне клиента, и на стороне сервера перелапачивает уже полученный набор еще раз. Должно ведь куда-то попадать результирующее количество записей. В СУДБ есть переменная @@ROWCUNT, просто у меня не получается прилепить ее к результирующему множеству. Наверняка должен быть способ, получить количество записей, не перебирая их в тупую.

Думаю этот вопрос лучше задать в профильный форум по вашему серверу.
И посмотреть еще раз на API, которым пользуетесь для доступа к базе.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317392
совет...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для ODBC посмотрите на SQLGetDiagRec и SQLGetDiagField, они предоставляют диагностичискую информацию для дескриптора. может, и количество записей там будет, а мож и ответ сервера типа "xxx rows selected"
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317452
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 пишет:

> Например выполнить еще один запрос
> SELECT Count(*) FROM table

Это бесполезно. Два запроса никак не связаны между собой.
Не факт что потом ТОТ запрос вернет именно ЭТО количество строк.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317453
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft пишет:
> Плохо, еще раз к базе обращаться... Я сделал один раз селект и хочу
> узнать количество записей
>
> тогда читай все записи с сервера и считай в процессе

Правильно, это единстенно правильный вариант.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317454
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:

> А понял, но это не подходит - мне прийдется перелапатить все записи, а
> если их 1.000.000, мне нужно предупредить пользователя о масштабе трагедии:)

Другого варианта все равно нет.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317455
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:

> Не очень понимаю, как она поможет... объясните по подробнее пжлста.

Да никак она не поможет.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317458
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:
> попадать результирующее количество записей. В СУДБ есть переменная
> @@ROWCUNT, просто у меня не получается прилепить ее к результирующему
> множеству. Наверняка должен быть способ, получить количество записей, не
> перебирая их в тупую.

Да ты можешь его прилепить, для этого достаточно после этого SELECT-а
сделать еще один, SELECT @@rowcount.
Но смысла это делать нет никакого, потому что ты получишь его
только ПОСЛЕ выборки основного набора данных. А если ты уже выберишь
его, то ты уже будешь знать количество строк.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317479
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:

> Выполняю SQLExecDirect(..., "SELECT * FROM table",...).
> Как мне узнать количество записей, которые вернулись?


Короче, резюмирую.
Чтобы узнать количество записей , которые вернулись,
есть два способа.

1) Профетчить все записи и посчитать их.
(SQLFetch() ... )

2) Вызвать SQLRowCount() --- не торопитесь радоваться.
SQLRowCount() не гарантирует возвращение количества записей
до того, как вы не профетчите все записи. И даже больше -
в последних редакциях ODBC он для SELECT-а вообще ничего не
гарантирует (и это правильно!).

Так что фактически при наличии двух способов способ этот
на самом деле только один.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317969
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOНе очень понимаю, как она поможет... объясните по подробнее пжлста.

быстрее. Данные не будут передаваться. Сервер только по таблице пробежитсья
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317971
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
SnowMan2 пишет:

> Например выполнить еще один запрос
> SELECT Count(*) FROM table

Это бесполезно. Два запроса никак не связаны между собой.
Не факт что потом ТОТ запрос вернет именно ЭТО количество строк.

Насколько я понял, автору требуется примерное количество.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318052
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv
Насоветовал тоже человеку проходить по миллиону записей. У него будет такие тормоза, что начальство не поймет.

Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем записям, у него другие методы. Результат - одно число, так что сетка не перегружается.
Если конечно в таблицу не вводят новые записи обновременнно 50 пользователей, и между запрсами
SELECT count(*) FROM Table
и
SELECT * FROM Table
никто не успел добавить или удалить запись (времени очень мало, доли секунды), то число записей будет правильным, иначе отличаться на число добавленных или удаленных (читай на 1).

Кол-во обращений к серверу не критачно, при хорошей работе их сотни или тысячи.

2 OIO
Тут исходя из задачи надо подумать, а надо ли пользователю миллион записей. Если он их все будет просматривать, то это одно дело. Хотя просмотр большого кол-ва информации не приводит к ее усвоению.
А если на основе этой информации надо строить каки-то интегральные составляющие (суммы, средние значения, min, max и др.) то надо пользоваться агрегатными функциями SQL и группировками. Если более сложнвми характеристиками, требующими программирования, то хранимими процедурами или функциями сервера.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318362
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем записям, у него другие методы.Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318484
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я понял, что это не тривиальная задача, буду просто иметь это ввиду и постараюсь обойтись без количества записей.
2SnowMan2
select * from table - это просто как пример привел от которого отталкиваться, имелось ввиду все же определение количества записей, которые вернул select, отнюдь не с тривиальными условиями, которые несут нагрузку на сервер, и хотелось избежать повторного прохождения по таблице.
В любом случае, спасибо всем за помощь и обсуждение этого вопроса. Отрицательный ответ - тоже ответ.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318803
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 пишет:

> Насоветовал тоже человеку проходить по миллиону записей. У него будет
> такие тормоза, что начальство не поймет.

Где ты взял про миллионы записей ? И где я такое советовал ?

> Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не
> проходит по всем записям, у него другие методы. Результат - одно число,
> так что сетка не перегружается.

Ну не всегда так происходит, и не везде. Не во всех СУБД. И в одной
СУБД не во всех случаях.

> Тут исходя из задачи надо подумать, а надо ли пользователю миллион
> записей. Если он их все будет просматривать, то это одно дело. Хотя

Ты когда нибудь просматривал миллионы записей ?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318811
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:

> Я понял, что это не тривиальная задача, буду просто иметь это ввиду и

Да неправильно ты понял, это ВООБЩЕ НЕВОЗМОЖНО. Задача нерешаема
в общем случае.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34320499
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivSnowMan2 пишет:

> Насоветовал тоже человеку проходить по миллиону записей. У него будет
> такие тормоза, что начальство не поймет.

Где ты взял про миллионы записей ? И где я такое советовал ?


В 8-ом сообщении от начала топика OIO пишет про миллион записей. После чего ты пишешь:
> тогда читай все записи с сервера и считай в процессе
Правильно, это единстенно правильный вариант.

MasterZiv> Тут исходя из задачи надо подумать, а надо ли пользователю миллион
> записей. Если он их все будет просматривать, то это одно дело. Хотя

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


miksoft
>SnowMan2
>Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем >записям, у него другие методы.

Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.


Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb. Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном целочисленные). Локальный вариант.

Код: plaintext
1.
2.
3.
4.
5.
6.
Запрос                                                      Результат    Время  Примечание
SELECT count(*) FROM CheckWork                                159406     <1сек  
SELECT count(*) FROM CheckWork WHERE Depart_ID=3              19265      <1ceк Есть индекс по Depart_ID
SELECT count(*) FROM CheckWork WHERE Depart_ID>3              140113     ~1 cек
SELECT count(*) FROM CheckWork WHERE CheckLoadKind_ID=56      110654     ~3cek Нет индекса по CheckLoadKind_ID
SELECT count(*) FROM CheckWork WHERE Student_ID>1 and 
Emp_ID>2 and CheckLoadKind_ID>3 and GS_ID>4 and Subj_ID>5     155981     ~1 cек Есть индекс по Emp_ID
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34320925
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 miksoft
>SnowMan2
>Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем >записям, у него другие методы.

Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.


Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb. Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном целочисленные). Локальный вариант.

Код: plaintext
1.
2.
3.
4.
5.
6.
Запрос                                                      Результат    Время  Примечание
SELECT count(*) FROM CheckWork                                159406     <1сек  
SELECT count(*) FROM CheckWork WHERE Depart_ID=3              19265      <1ceк Есть индекс по Depart_ID
SELECT count(*) FROM CheckWork WHERE Depart_ID>3              140113     ~1 cек
SELECT count(*) FROM CheckWork WHERE CheckLoadKind_ID=56      110654     ~3cek Нет индекса по CheckLoadKind_ID
SELECT count(*) FROM CheckWork WHERE Student_ID>1 and 
Emp_ID>2 and CheckLoadKind_ID>3 and GS_ID>4 and Subj_ID>5     155981     ~1 cек Есть индекс по Emp_ID
Время выполнения ни о чем не говорит, да еще на таких копеечных объемах. План покажи.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34322803
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 пишет:

> Это верно только для этого тривиального запроса, только для некоторых
> СУБД и только в некоторых случаях. В большинстве остальных случаев будет
> полный скан таблицы или индекса.

> Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb.
> Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном
> целочисленные). Локальный вариант.

Ну и о чем это говорит ? Даже если это и так, как ты написал, я ЕЩЕ РАЗ
повторяю, что НЕ НА ВСЕХ СУБД, и НЕ НА ВСЕХ ЗАПРОСАХ это будет так.

Ладно, тему считаю закрытой, поскольку дальнейшее обсуждение бессмысленно
без конкретики СУБД, запросов, таблиц и пр.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34324086
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Да ты можешь его прилепить, для этого достаточно после этого SELECT-а
сделать еще один, SELECT @@rowcount.
Но смысла это делать нет никакого, потому что ты получишь его
только ПОСЛЕ выборки основного набора данных. А если ты уже выберишь
его, то ты уже будешь знать количество строк.
Точно? а по-моему будет 2 рекордсета переданы - фетчи какой хочешь... надо бы проверить..


3) в mssql можно юзать
Код: plaintext
1.
SELECT id FROM sysobjects
compute count(id)
4)
Код: plaintext
1.
2.
3.
4.
SELECT id,count(*),max(name) FROM sysobjects
group by id
with cube
order by id
первая запись во втором столбце - содержит количество строк.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333675
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец...
Код: plaintext
1.
2.
3.
4.
SELECT id,count(*),max(name) FROM sysobjects
group by id
with cube
order by id
первая запись во втором столбце - содержит количество строк.

наконец то хоть одын нормальный ответ...Вы это чаво мужики ? Ни разу с такой фиговой задачей не сталкивались ? я даже подумал - во прикалываются :)


есть правда одно но, возможно это и имелось в ввиду...Что дескать возвращать по разным условиям (каунт и сам запрос) - в вопросе об этом вроде как ни слова...


с уважением
(круглый)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333703
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Так уже как бы выше обсуждалось, что count(*) - это здорово, но как потом профетчить этот результат, ведь он вернется после всех записей?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333851
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOТак уже как бы выше обсуждалось, что count(*) - это здорово, но как потом профетчить этот результат, ведь он вернется после всех записей?

уже выше показали - его можно вернуть как поле, а не как запись...минус подхода - Вы это поле будете обрабатывать в каждой запси возвращаемого рекордсета...

с уважением
(круглый)
ЗЫ
Задам самый вредный вопрос... Нафига Вам это всё ?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334041
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я думаю, такой подход не буду использовать из-за необходимости возиться еще с одним полем - не удобно...
Просто мне было бы удобно знать количество записей до того как их выдавать.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334070
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO...Просто мне было бы удобно знать количество записей до того как их выдавать.

например 100 миллионов - пойдём экстремальным путём...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334084
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я сейчас работаю на тестовой версии с 200.000 записей и то операции обновления, удаления занимают порядочно времени, что говорить про такие объемы...
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334100
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOоперации обновления, удаления занимают порядочно времениЭто уже отдельная песня. При желании можно и одну запись удалять полдня.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34342404
Подскажите, пожалуйста начинающему.

Из таблицы делается выборка
Параметров запроса в операторе WHERE много.
Я делаю два запроса к базе данных.

Первым запросом к базе опередляется количество записей, удовлетворяющих параметрам, чтобы показать счетчик пользователю:
SELECT COUNT(*)
FROM items
WHERE ...


Вторым запросом в базе запрашиваются эти данные, с использованием LIMIT, чтобы можно было сделать постраничный вывод:
SELECT head, description, date_add
FROM items
WHERE ... LIMIT


Вопрос:
Можно ли совместить оба этих запроса? То есть, чтобы получить общее количество
записей в базе, удовлетворяющих параметрам, и сразу запросить часть из них.
У меня что-то не получается.
То есть примерно так:
SELECT COUNT(*), head, description, date_add
FROM items
WHERE ... LIMIT

Не хотелось бы делать несколько или вложенных запросов.
База MySQL.
Спасибо.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]