Вам дана переменная (она передается как параметр в функцию), поэтому вам не нужно ее создавать - просто установите length
в str.length
:
function exerciseThree (str) {
var length = str.length;
return length;
}
console.log("'One' is " + exerciseThree("One") + " characters long");
console.log("'Hello, World!' is " + exerciseThree("Hello, World!") + " characters long");
Я уверен, что Вы будете любить это. Я недавно узнаю о Dense_Rank () функцию, которая является для "рейтинга в разделе набора результатов" согласно MSDN
Проверьте код ниже и как "CommentID" отсортирован.
Насколько я понимаю, Вы пытаетесь разделить свой набор результатов ParentCommentID.
Обратите внимание на "denserank" столбец.
with Replies (CommentID, ParentCommentID, Level) as
(
select c.CommentID, c.ParentCommentID, 1 as Level
from Comment c
where ParentCommentID is null and CommentID = 1
union all
select c.CommentID, c.ParentCommentID, r.Level + 1 as Level
from Comment c
inner join Replies r on c.ParentCommentID = r.CommentID
)
select *,
denserank = dense_rank() over (partition by ParentCommentID order by CommentID)
from Replies
order by denserank
Результат ниже
Hmmmm - Я не уверен, является ли Ваша структура самым подходящим для этой проблемы. Первое, что пришло на ум я не могу думать так или иначе для сортировки данных, поскольку Вы хотите их в вышеупомянутом запросе.
Лучшее, о котором я могу думать, - то, если у Вас есть родительская таблица, которая связывает Ваши комментарии (например, таблица темы). Если Вы делаете необходимо смочь просто присоединиться ответам на тот (необходимо будет включать корректный столбец, очевидно), и затем можно отсортировать по topicID, Уровень для получения порядка сортировки, который Вы после (или независимо от того, что другая информация о таблице темы представляет хорошее значение для сортировки).
Рассмотрите хранение всей иерархии (с триггерами для обновления его, если это изменяется) в поле.
Это поле в Вашем примере имело бы: 1 1.2 1.2.3 1.2.5 1.4
затем просто необходимо отсортировать на том поле, попробовать это и видеть:
create table #temp (test varchar (10))
insert into #temp (test)
select '1'
union select '1.2'
union select '1.2.3'
union select '1.2.5'
union select '1.4'
select * from #temp order by test asc
Вы должны использовать иерархию (только sql2008) или связку строк (или байтов).