﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28643	Complete the ORM Function Library	Matthew Pava	JunyiJ	"I was surprised to learn that we didn't have a StrIndex function until version 2, and yet we had Substr since at least version 1.8.  I wonder how users were using Substr without also finding a use for StrIndex this whole time.  Anyway, since we seem to be adding these functions one at a time, why don't we work on trying to get the built-ins implemented in one sweep instead?

We may even want to split the documentation page (https://docs.djangoproject.com/en/dev/ref/models/database-functions/) into further categories with String functions and Numeric functions.

This is just a sample checklist, with corresponding attributes to which backend has them available.

||||||||||||||= **Comparison** =||
||**Name**||**Description**||**PostgreSQL**||**Oracle**||**MySQL**||**SQLite**||**PR**||
||NULLIF()||Returns NULL if the first argument equals the second.||X||X||X||X||[https://github.com/django/django/pull/9543 9543]||
||||||||||||||= **Math** =||
||**Name**||**Description**||**PostgreSQL**||**Oracle**||**MySQL**||**SQLite**||**PR**||
||ABS()||Returns the absolute value.||X||X||X||X||-||
||ACOS()||Returns the arccosine.||X||X||X||-||-||
||ASIN()||Returns the arcsine.||X||X||X||-||-||
||ATAN()||Returns the arctangent.||X||X||X||-||-||
||ATAN2()||Returns the arctangent of the two variables passed to it.||X||X||X||-||-||
||CEILING()||Returns the smallest integer value that is not less than a numeric expression||X||as CEIL()||X||-||-||
||COS()||Returns the cosine expressed in radians.||X||X||X||-||-||
||COT()||Returns the cotangent.||X||X||X||-||-||
||DEGREES()||Returns a numeric expression converted from radians to degrees.||X||X||X||-||-||
||EXP()||Returns the base of the natural logarithm (e) raised to the power of a numeric expression.||X||X||X||-||-||
||FLOOR()||Returns the largest integer value that is not greater than a numeric expression.||X||X||X||-||-||
||LOG()||Returns the natural logarithm of a numeric expression.||X||X||X||-||-||
||MOD()||Returns the remainder of one expression by diving by another expression.||X||X||X||-||-||
||PI()||Returns the value of pi||X||-||X||-||-||
||POWER()||Returns the value of one expression raised to the power of another expression||X||X||X||-||-||
||RADIANS()||Returns the value of an expression converted from degrees to radians.||X||X||X||-||-||
||ROUND()||Returns a numeric expression rounded to an integer.\\Can be used to round an expression to a number of decimal points||X||X||X||X||-||
||SIN()||Returns the sine given in radians.||X||X||X||-||-||
||SQRT()||Returns the square root.||X||X||X||-||-||
||TAN()||Returns the tangent expressed in radians.||X||X||X||-||-||
||||||||||||||= **Text** =||
||**Name**||**Description**||**PostgreSQL**||**Oracle**||**MySQL**||**SQLite**||**PR**||
||ASCII()||Returns numeric value of left-most character||X||X||X||as UNICODE()||-||
||CHR()||Character with the given code||X||X||as CHAR()||as CHAR()||-||
||LEFT()||Returns the leftmost number of characters as specified||X||-||X||-||-||
||LPAD()||Returns the string argument, left-padded with the specified string||X||X||X||-||-||
||LTRIM()||Removes leading spaces||X||X||X||X||[https://github.com/django/django/pull/9220 9220]||
||MD5()||Calculates the MD5 hash of string, returning the result in hexadecimal||X||-||-||-||-||
||REPEAT()||Repeats a string the specified number of times||X||-||X||-||-||
||REPLACE()||Replaces occurrences of a specified string||X||X||X||X||[https://github.com/django/django/pull/9539 9539]||
||REVERSE()||Reverse the characters in a string||X||-||X||-||-||
||RIGHT()||Returns the specified rightmost number of characters||X||-||X||-||-||
||RPAD()||Appends string the specified number of times||X||X||X||-||-||
||RTRIM()||Removes trailing spaces||X||X||X||X||[https://github.com/django/django/pull/9220 9220]||
||TRIM()||Removes leading and trailing spaces||X||X||X||X||[https://github.com/django/django/pull/9220 9220]||"	New feature	assigned	Database layer (models, ORM)	dev	Normal			josh.smeaton@… Mariusz Felisiak Shai Berger Adam Johnson	Accepted	1	0	0	0	0	0
