Your question is more about SQL than WordPress.
If you want to sort your term names as numbers, you can in general try
SELECT * FROM wp_terms ORDER BY name+0 ASC
or
SELECT * FROM wp_terms ORDER BY name*1 ASC
or use CAST:
SELECT * FROM wp_terms ORDER BY CAST(name AS SIGNED) ASC
where you can use SIGNED
, UNSIGNED
or maybe DECIMAL(10,2)
, just depending on your numbers.
Update
To test the ordering you can then visit your PHPMyAdmin and run this query:
SELECT tool_terms.name AS tname, tool_posts.* FROM tool_posts
LEFT OUTER JOIN tool_term_relationships ON tool_posts.ID=tool_term_relationships.object_id
LEFT OUTER JOIN tool_term_taxonomy USING (term_taxonomy_id)
LEFT OUTER JOIN tool_terms USING (term_id)
WHERE 1=1
AND tool_posts.post_type="landschapselement"
AND (tool_posts.post_status="publish" OR tool_posts.post_status="draft" OR tool_posts.post_status="pending" OR tool_posts.post_status="private")
AND (taxonomy = 'beheerseenheidnummer' OR taxonomy IS NULL)
GROUP BY object_id
ORDER BY tool_terms.name+0 ASC, tool_posts.post_title ASC
to see if it works where I replaced
ORDER BY GROUP_CONCAT(tool_terms.name ORDER BY name ASC) ASC
with
ORDER BY tool_terms.name+0 ASC, tool_posts.post_title ASC
where we order the posts by the taxonomy numeric value, and then the second order is on the post title. I also added the field tool_terms.name AS tname
to the SELECT
part. This works on my install.
You can also try to replace
$clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
$clauses['orderby'] .= ( 'DESC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
with:
$clauses['orderby'] = " {$wpdb->terms}.name+0 ";
$clauses['orderby'] .= ( 'DESC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
$clauses['orderby'] = ", {$wpdb->posts}.post_title ASC ";