Вы можете извлечь столбцы, выполнив:
select substring_index(column, ',', 1) as data
from t
union all
select substring_index(substring_index(column, ',', 2), -1) as data
from t
where column like '%,%'
union all
select substring_index(substring_index(column, ',', 3), -1) as data
from t
where column like '%,%,%'
union all
select substring_index(substring_index(column, ',', 4), -1) as data
from t
where column like '%,%,%,%';
Получить идентификатор ребенка сложно Вы можете сделать это, используя исходный столбец и некоторые переменные:
select c.col_id, t.data
from (select column, substring_index(column, ',', 1) as data
from t
union all
select column, substring_index(substring_index(column, ',', 2), -1) as data
from t
where column like '%,%'
union all
select column, substring_index(substring_index(column, ',', 3), -1) as data
from t
where column like '%,%,%'
union all
select column, substring_index(substring_index(column, ',', 4), -1) as data
from t
where column like '%,%,%,%'
) t join
(select column, (@rn := @rn + 1) as col_id
from t cross join
(select @rn := 0) params
) c
on t.column = c.column;
В случае, если Вы не знаете, почему это не работает в IE, вот документация MSDN относительно той функции :
при использовании getElementsByName метода все элементы в документе, которые имеют атрибут указанного имени или идентификационное значение атрибута, возвращаются.
Элементы, которые поддерживают и атрибут ИМЕНИ и идентификационный атрибут, включены в набор, возвращенный getElementsByName методом, но элементы с ИМЕНЕМ expando не включены в набор; поэтому, этот метод не может использоваться для получения пользовательских тегов по имени.
Firefox позволяет getElementsByName()
получать элементы, которые используют ИМЯ expando, который является, почему он работает. Является ли это Хорошим Thingв „ў, может подлежать дебатам, но это - действительность их.
Так, одна опция состоит в том, чтобы использовать getAttribute()
метод DOM, чтобы попросить атрибут ИМЕНИ и затем протестировать значение, чтобы видеть, является ли это тем, что Вы хотите, и если так, добавьте его к массиву. Это потребовало бы, однако, чтобы Вы выполнили итерации по всем узлам на странице или по крайней мере в подразделе, который не был бы самым эффективным. Вы могли ограничить тот список заранее при помощи чего-то как getElementsByTagName()
, возможно.
Другой способ сделать это, если Вы управляете HTML страницы, должно дать все элементы интереса идентификатор, который варьируется только числом, например:
<div id="Change0">...</div>
<div id="Change1">...</div>
<div id="Change2">...</div>
<div id="Change3">...</div>
И затем имеют JavaScript как это:
// assumes consecutive numbering, starting at 0
function getElementsByModifiedId(baseIdentifier) {
var allWantedElements = [];
var idMod = 0;
while(document.getElementById(baseIdentifier + idMod)) { // will stop when it can't find any more
allWantedElements.push(document.getElementById(baseIdentifier + idMod++));
}
return allWantedElements;
}
// call it like so:
var changes = getElementsByModifiedId("Change");
, Который является взломом, конечно, но он сделал бы задание, в котором Вы нуждаетесь и не слишком неэффективны, выдерживают сравнение с некоторыми другими взломами.
при использовании платформы/инструментария JavaScript некоторого вида, Вы опции намного лучше, но у меня нет времени для вхождения в те специфические особенности, если Вы не указываете на использование того. Лично, я не знаю, как люди живут без одного, они экономят так много времени, усилия и разочарования, что Вы не можете позволить себе не для использования того.
Существует несколько проблем:
id=""
с name=""
name=""
, не позволяется на <span>
Для фиксации, я предлагаю:
name=""
к class=""
-
var changes = document.getElementById('text').getElementsByTagName('span');
for (var c=0; c<changes.length; c++) {
var ch = changes[c];
if (ch.className != from)
continue;
var current = new String(ch.innerHTML);
Не очень распространено найти элементы с помощью свойства NAME. Я рекомендовал бы переключиться на свойство ID.
можно однако найти элементы с собственным именем с помощью jQuery:
$("*[name='whatevernameYouWant']");
это возвратит все элементы с именем.
getElementsByName поддерживается в IE, но существуют ошибки. В особенности это возвращает элементы, вЂid’ которых соответствуют данному значению, а также вЂname’. Не может сказать, является ли это проблемой, Вы имеете без немного большего количества контекста, кода и фактических сообщений об ошибках все же.
В целом, getElementsByName, вероятно, лучше всего избегают, потому что атрибут вЂname’ в HTML имеет несколько перекрывающихся целей, которые могут перепутать. Используя getElementById намного более надежно. При специфическом работании с полями формы можно более надежно использовать form.elements [имя] для получения полей, которые Вы ищете.
Просто другая ошибка DOM в IE:
Ошибка 1: http://webbugtrack.blogspot.com/2007/08/bug-411-getelementsbyname-doesnt-work.html
Ошибка 2: http://webbugtrack.blogspot.com/2008/04/bug-403-another-getelementsbyname-bugs.html