Question: Is there any way to put a non printing or non obtrusive character at the beginning of a string of data in sqlserver. so that when an **order by** is performed, the string is sorted after the letter z alphabetically? 

I have used a space at the beginning of the string to get the string at the top of the sorted list, but I am looking to do something similar to put a string at the end of the list.

I would rather not put another field such as "SortOrder" in the table to use to order the sort, and I would rather not have to sort the list in my code. 

Added: Yes I know this is a bad idea, thanks to all for mentioning it, but still, I am curious if what I am asking can be done

Answer: 
You should use another column in the database to help specify the ordering rather than modifying the string:

```
SELECT *
FROM yourtable 
ORDER BY sortorder, yourstring

```

Where you data might look like this:

```
yourstring               sortorder
foo                      0
bar                      0
baz                      1
qux                      1
quux                     2

```

If you can't modify the table you might be able to put the sortorder column into a different table and join to get it:

```
SELECT *
FROM yourtable AS T1
JOIN yourtablesorting AS T2
ON T1.id = T2.T1_id
ORDER BY T2.sortorder, T1.yourstring

```

---

Alternative solution:

If you really can't modify the database at all, not even adding a new table then you could add any character you like at the start of the string and remove it during the select:

```
SELECT RIGHT(yourstring, LEN(yourstring) - 1)
FROM yourtable
ORDER BY yourstring

```
You could put a sort order in the query and use unions (no guarantees on performance).

```
select 1 as SortOrder, *
from table
where ... --first tier
union
select 2, *
from table
where ... --second tier
order by SortOrder

```