Solved

How to find all values in a column which is not money

Posted on 2016-11-11
25
37 Views
Last Modified: 2016-11-11
Hi,

How to find all values in a column which is not money datatype
0
Comment
Question by:RIAS
  • 9
  • 8
  • 8
25 Comments
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883532
Try..

--

SELECT [col_names] FROM TABLENAME 
WHERE COLNAME NOT LIKE '%.%' AND COLNAME NOT LIKE '%.00%' 

--

Open in new window

0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883583
How to find all values in a column which is not money datatype
What's the column data type then?
0
 

Author Comment

by:RIAS
ID: 41883584
It is nvarchar(50)
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883586
Wondering why are you storing money in a nvarchar field.
So, how's those money values formatted in that column?
1
 

Author Comment

by:RIAS
ID: 41883587
Thats the point i ma changing the datatype but, need to know the data which is not in money format
0
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883588
Try..

--

CREATE TABLE a
(
	a VARCHAR(100)
)
GO

INSERT INTO a VALUES ('2.34'),('5.0'),('5'),('13.2'),('Pawan'),('13.2')
GO

SELECT * FROM a 
WHERE a NOT LIKE '%.%' AND a NOT LIKE '%.00%' 

--

Open in new window


Output
---------
a
5
Pawan
0
 

Author Comment

by:RIAS
ID: 41883589
Pawan,
 There is aproblem with you query its returning even
10900
0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883590
Thats the point i ma changing the datatype but, need to know the data which is not in money format
For help you I need to know how a money value is stored in that field. Can you provide a sample?
0
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883592
Hi Rias,
Have you tried the code I gave. <<Check out the example One>>

Regards,
Pawan
0
 

Author Comment

by:RIAS
ID: 41883594
Vitor,

Example:

NULL
$43,869.60
£10,000.00
£235,847.99
£266,941.14
£486,704.27
1, 029.000.00
1, 603, 571.10
1,000,000.00
1,055.00
1,066,069.80
1,100.00
1,209,454.44
1,250.00
1,277,877.27
1,328,837.00
1,436,880.00
1,457.50
0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883595
You should mark which ones are considered money or we just assume everything that has numbers are money?
0
 

Author Comment

by:RIAS
ID: 41883597
yes, we just assume everything that has numbers are money
0
 
LVL 28

Assisted Solution

by:Pawan Kumar
Pawan Kumar earned 250 total points
ID: 41883598
Try

[code]
--

CREATE TABLE a
(
	a VARCHAR(100)
)
GO

INSERT INTO a VALUES 
(NULL),
 ('$43,869.60'),
('£10,000.00'),
('£235,847.99'),
('£266,941.14'),
('£486,704.27'),
 ('1, 029.000.00'),
 ('1, 603, 571.10'),
 ('1,000,000.00'),
 ('1,055.00'),
 ('1,066,069.80'),
 ('1,100.00'),
 ('1,209,454.44'),
 ('1,250.00'),
 ('1,277,877.27'),
 ('1,328,837.00'),
 ('1,436,880.00'),
 ('1,457.50' )

GO

SELECT * FROM a 
WHERE a NOT LIKE '%.%' OR a IS NULL 

--

Open in new window


Output
---------
a
NULL

[/code]
0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883600
Ok, then this should work:
SELECT *
FROM TableName
WHERE ISNUMERIC(ColumnName) = 1

Open in new window

0
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883602
Hi Rias,

Any luck ?
0
 
LVL 49

Accepted Solution

by:
Vitor Montalvão earned 250 total points
ID: 41883603
Looks like you want the opposite (not money). So just change the filter:
SELECT *
FROM TableName
WHERE ISNUMERIC(ColumnName) = 0

Open in new window

0
 

Author Closing Comment

by:RIAS
ID: 41883604
Thanks!
0
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883606
@Rias - You cannot accept Incorrect solution. His both solutions are giving incorrect outputs. Please note that these solution will be referred by people in future.

Both see below -


SELECT *
FROM a
WHERE ISNUMERIC(a) = 0

O/p

NULL
1, 029.000.00
1, 603, 571.10


SELECT *
FROM a
WHERE ISNUMERIC(a) = 1

Output
------

$43,869.60
£10,000.00
£235,847.99
£266,941.14
£486,704.27
1,000,000.00
1,055.00
1,066,069.80
1,100.00
1,209,454.44
1,250.00
1,277,877.27
1,328,837.00
1,436,880.00
1,457.50
0
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883612
Hi Rias,

Can you confirm whether Vitor Solution worked for you and how ?

Thank You in advance.

Regards,
Pawan
0
 

Author Comment

by:RIAS
ID: 41883617
Pawan,
Just give sometime.Will get back on this .
0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883622
Those aren't numbers:
1, 029.000.00 --> Have an extra space and 3 dots
1, 603, 571.10 --> Have an extra space

If the author want to transform those values into a money field will fail.
So Pawan's solution won't work if let these values stays in the table.

Capture.PNG
3
 
LVL 28

Expert Comment

by:Pawan Kumar
ID: 41883628
Okies. Cool. !!
0
 

Author Comment

by:RIAS
ID: 41883728
Thanks Vitor!!!
0
 
LVL 49

Expert Comment

by:Vitor Montalvão
ID: 41883744
Your welcome, RIAS.
Following Pawan's comment "@Rias - You cannot accept Incorrect solution." you should unaccept his solution. A couple of days ago you also gave him points for his "effort" (copying my solution and change a value) and that was also an incorrect solution.
I won't be picky with this (will let a moderator to decide what to do) but you should be more careful with the answers you're accepting. Sometimes is good to perform more tests before accepting immediately an answer. We aren't on hurry here. :)
Cheers
3
 

Author Comment

by:RIAS
ID: 41883745
Vitor,

 Went on some other task so could not test thoroughly but,will take a note of this.

Cheers
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question