Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Data 1, 2, 3, 4, 11, 21, 99

I want to get 1st, 2nd, 3rd, 11th, 21st, and 99th

I could roll my own, but is there any function built into SQL server that could so this for me? Corollary: I will also be looking for a function to turn numbers into words, as in:

72,451 -> seventy-two thousand, four hundred fifty-one

And would expect it (if it exists) to be in the same family of formatting methods.

share|improve this question
up vote 5 down vote accepted

No, there is not any built in function that will do this. This is something that should be handled in the presentation layer and not in the data coming from the database.

EDIT: based on the presence of a "crummy presentation layer", IF this would have to be done in the database I suggest creating a UDF to convert the values to ordinal or words. IT definitely would not be pretty.

From a comment: For the second part of the question, Daniel used the script found here:

share|improve this answer
presentation layer is InfoMaker. very crummy program, so as much as we can push into the database, we do. – Daniel Williams Sep 22 '11 at 19:04

With regards to the second part of the request -- turning numbers into words -- there is a function, Util_ToWords available in the Free version of the SQL# SQLCLR library (which I am the author of, and again, this function is in the Free version) that does just this:

SELECT SQL#.Util_ToWords(72451);
-- Seventy Two Thousand, Four Hundred Fifty One

SELECT SQL#.Util_ToWords(72451.56);
-- Seventy Two Thousand, Four Hundred Fifty One and 56

The Util_ToWords function was originally intended to mimic a similar function available in Crystal Reports that helps with printing checks (in the US, at least).

Please note that the wording:

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.