I have a database with several tables and I need to search every varchar
column across the database, for columns that simultaneously contain lower and upper case characters.
To clarify:
If one column contains helLo
the name of the column should be returned by the query, but if the column values only contain either hello
or HELLO
then the name of the column is not returned.
Case sensitive search in SQL Server can be achieved either by using COLLATE or by using BINARY_CHECKSUM(). COLLATE is the T-SQL clause used to define collation. BINARY_CHECKSUM() is a built-in system function used to compare the binary check-sum value.
Use the SQL LOWER() function if you want to convert a string column to lowercase. This function takes only one argument: the column whose values you want to lowercase. This function is a good choice if your database is case sensitive and you want to select only records matching a particular string.
The SQL case sensitivity can be set for non-keyword objects such as tables and columns by specifying the collation against the database, tables, and column level by mentioning CI or CS in it that stands for case insensitive and case sensitive, respectively.
SQL Server UPPER() Function The UPPER() function converts a string to upper-case. Note: Also look at the LOWER() function.
Let's exclude all UPPER and all LOWER, the rest will be MIXED.
SELECT someColumn
FROM someTable
WHERE someColumn <> UPPER(someColumn) AND someColumn <> LOWER(someColumn)
EDIT:
As suggested in comments and described in detail here I need to specify a case-sensitive collation.
SELECT someColumn
FROM someTable
WHERE someColumn <> UPPER(someColumn) AND
someColumn <> LOWER(someColumn)
Collate SQL_Latin1_General_CP1_CS_AS
It sounds like you are after a case sensitive search, so you'd need to use a case sensitive collation for there WHERE clause.
e.g. if your collation is currently SQL_Latin1_General_CP1_CI_AS which is case insensitive, you can write a case sensitive query using:
SELECT SomeColumn
FROM dbo.SomeTable
WHERE SomeField LIKE '%helLo%' COLLATE SQL_Latin1_General_CP1_CS_AS
Here, COLLATE SQL_Latin1_General_CP1_CS_AS
tells it to use a case sensitive collation to perform the filtering.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With