|
|
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Помогите правильно сформировать запрос. Например, есть таблица: в столбце примерно такие значения: автор 01 0101 01010102 01010103 01010104 01010110 0102 Мне нужно выбрать только строки, содержащие только четыре знака в значении столбза. Это 0101 и 0102. Я создаю запрос автор SELECT LEFT(GostID, 4) AS RASD FROM Table GROUP BY LEFT(GostID, 4) По этому запросу у меня выбрались строки со значениями 01, 0101, 0102. Т.е., прихватились значения LEFT(GostID, 2). Подскажите, пожалуйста, как мне правильно сформировать условие? Заранее благодарю. Я пробовала и RTRIM, и RIGHT, у меня не получилось. Есть какой-то нюанс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2004, 22:27 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Если нужно выбирать записи, которые начинаются с 0101 или 0102, то SELECT * from Table where GostID LIKE '0101%' or GostID LIKE '0102%' Если нужны записи, равные 0101 или 0102, то SELECT * from Table where GostID = '0101' or GostID = '0102' Если нужны записи, соделжащие именно по количеству знаков - 4, то SELECT * from Table where LENGTH(GostID) = 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2004, 23:04 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Мне подходит третий вариант, т.к. дело не ограничивается выбором 0101, 0102. Есть и 0103 и 0204... Вариаций много. Поэтому нужно четко ограничить количество знаков. Но используя функцию LENGTH, выдается ошибка, что такой функции нет. Ищу по книге SQL Server 2000, пока в указателях, на L тоже нет такой функции. Вы правильно ее указали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2004, 09:27 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
До истины докопалась сама. Вот так правильно: автор HAVING ({ fn LENGTH(GostID) } = 4) Огромное спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2004, 09:37 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Но это не то, что мне нужно. Для того, чтобы объяснить свою задачу, приведу больше значений GostID: автор 01 01010101 01010102 01010103 01010104 01010105 0102 01020401 010301 010302 01050101 01050104 01050105 01050106 010502 01060101 01060102 01060103 02 В моей задаче больше подойдет, все-таки, LEFT(GostID, 4). В результате этого условия получится такой выбор: автор 01 0101 0101 0101 0101 0101 0102 0102 0103 0103 0105 0105 0105 0105 0105 0106 0106 0106 02 Мне же нужно, чтобы в этом списке не было 01, 02. Кстати, это не полный список GostID, могут быть и 03...13...20. Важно то, что строки, где значение ограничивается двумя знаками, нужно исключить. Далее я произвожу суммирование по второму столбцу таблицы, где проставлены значения масс. И у меня должны получиться суммы по подразделам (01, 02 - это разделы). автор0101 - sum-масса 0102 - sum-масса 0103 - sum-масса 0105 - sum-масса 0106 - sum-масса Это конечный результат. А если использую функцию LENGTH(GostID) = 4 , то результат выборки таков: автор0102 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2004, 10:29 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Спасибо, уже вопрос решился. Помогли на форуме Си Билдера. Вот правильный ответ: авторSELECT LEFT(GostID, 4) AS RASD FROM Table Where LEFT(GostID, 2)<>LEFT(GostID, 4) GROUP BY LEFT(GostID, 4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2004, 11:01 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
как круто laifik завернула :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2004, 14:12 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Diabloкак круто laifik завернула :) я в шоке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 14:59 |
|
||
|
Запрос на выборку
|
|||
|---|---|---|---|
|
#18+
Кстати я только щас допер что требовалось-то!!! Тут уже вопрос постановки задачи - как поставишь её, так результат и получишь. Короче, вот как это сделал бы я: select left(tt1_num1,4) from `testtab1` where length(tt1_num1)>3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 21:13 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32829813&tid=1854484]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 270ms |
| total: | 516ms |

| 0 / 0 |
